forked from KolibriOS/kolibrios
* unknown/unsupported videomode at boot leads to return in config manager
* boot config manager now allows to totally disable DMA access to HD git-svn-id: svn://kolibrios.org@514 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
4c1ad6f2c7
commit
875ba74b27
10
kernel/trunk/blkdev/hd_drv.inc
Executable file → Normal file
10
kernel/trunk/blkdev/hd_drv.inc
Executable file → Normal file
@ -54,6 +54,9 @@ hd_read:
|
|||||||
call find_empty_slot ; ret in edi
|
call find_empty_slot ; ret in edi
|
||||||
cmp [hd_error],0
|
cmp [hd_error],0
|
||||||
jne return_01
|
jne return_01
|
||||||
|
; DMA read is permitted if [allow_dma_access]=1 or 2
|
||||||
|
cmp [allow_dma_access], 2
|
||||||
|
ja .nodma
|
||||||
cmp [dma_hdd], 1
|
cmp [dma_hdd], 1
|
||||||
jnz .nodma
|
jnz .nodma
|
||||||
call hd_read_dma
|
call hd_read_dma
|
||||||
@ -229,8 +232,9 @@ write_cache:
|
|||||||
cmp eax,[PARTITION_END]
|
cmp eax,[PARTITION_END]
|
||||||
ja danger
|
ja danger
|
||||||
|
|
||||||
cmp [allow_dma_write], 1
|
; DMA write is permitted only if [allow_dma_access]=1
|
||||||
jnz .nodma
|
cmp [allow_dma_access], 2
|
||||||
|
jae .nodma
|
||||||
cmp [dma_hdd], 1
|
cmp [dma_hdd], 1
|
||||||
jnz .nodma
|
jnz .nodma
|
||||||
; Ž¡ê¥¤¨ï¥¬ § ¯¨áì 楯®çª¨ ¯®á«¥¤®¢ ⥫ìëå ᥪâ®à®¢ ¢ ®¤® ®¡à 饨¥ ª ¤¨áªã
|
; Ž¡ê¥¤¨ï¥¬ § ¯¨áì 楯®çª¨ ¯®á«¥¤®¢ ⥫ìëå ᥪâ®à®¢ ¢ ®¤® ®¡à 饨¥ ª ¤¨áªã
|
||||||
@ -601,7 +605,7 @@ cache_chain_size db 0
|
|||||||
cache_chain_started db 0
|
cache_chain_started db 0
|
||||||
dma_task_switched db 0
|
dma_task_switched db 0
|
||||||
dma_hdd db 0
|
dma_hdd db 0
|
||||||
allow_dma_write db 0
|
allow_dma_access db 0
|
||||||
endg
|
endg
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
|
@ -109,6 +109,7 @@ sayerr_plain:
|
|||||||
start_of_code:
|
start_of_code:
|
||||||
cld
|
cld
|
||||||
; \begin{diamond}[02.12.2005]
|
; \begin{diamond}[02.12.2005]
|
||||||
|
; if bootloader sets ax = 'KL', then ds:si points to loader block
|
||||||
cmp ax, 'KL'
|
cmp ax, 'KL'
|
||||||
jnz @f
|
jnz @f
|
||||||
mov word [cs:cfgmanager.loader_block], si
|
mov word [cs:cfgmanager.loader_block], si
|
||||||
@ -116,7 +117,9 @@ start_of_code:
|
|||||||
@@:
|
@@:
|
||||||
; \end{diamond}[02.12.2005]
|
; \end{diamond}[02.12.2005]
|
||||||
|
|
||||||
cmp cx,'HA' ; ïî ðåãèñòðàì îïðåäåëÿåòñÿ çàãðóçêà ñ âèíòà
|
; if bootloader sets cx = 'HA' and dx = 'RD', then bx contains identifier of source hard disk
|
||||||
|
; (see comment to bx_from_load)
|
||||||
|
cmp cx, 'HA'
|
||||||
jnz no_hd_load
|
jnz no_hd_load
|
||||||
cmp dx,'RD'
|
cmp dx,'RD'
|
||||||
jnz no_hd_load
|
jnz no_hd_load
|
||||||
@ -140,25 +143,25 @@ no_hd_load:
|
|||||||
if lang eq ru
|
if lang eq ru
|
||||||
; Load & set russian VGA font (RU.INC)
|
; Load & set russian VGA font (RU.INC)
|
||||||
mov bp, RU_FNT1 ; RU_FNT1 - First part
|
mov bp, RU_FNT1 ; RU_FNT1 - First part
|
||||||
mov bx,1000h ; 768 bytes
|
mov bx, 1000h ; 768 bytes
|
||||||
mov cx,30h ; 48 symbols
|
mov cx, 30h ; 48 symbols
|
||||||
mov dx,80h ; 128 - position of first symbol
|
mov dx, 80h ; 128 - position of first symbol
|
||||||
mov ax,1100h
|
mov ax, 1100h
|
||||||
int 10h
|
int 10h
|
||||||
|
|
||||||
mov bp,RU_FNT2 ; RU_FNT2 -Second part
|
mov bp, RU_FNT2 ; RU_FNT2 -Second part
|
||||||
mov bx,1000h ; 512 bytes
|
mov bx, 1000h ; 512 bytes
|
||||||
mov cx,20h ; 32 symbols
|
mov cx, 20h ; 32 symbols
|
||||||
mov dx,0E0h ; 224 - position of first symbol
|
mov dx, 0E0h ; 224 - position of first symbol
|
||||||
mov ax,1100h
|
mov ax, 1100h
|
||||||
int 10h
|
int 10h
|
||||||
; End set VGA russian font
|
; End set VGA russian font
|
||||||
else if lang eq et
|
else if lang eq et
|
||||||
mov bp,ET_FNT ; ET_FNT1
|
mov bp, ET_FNT ; ET_FNT1
|
||||||
mov bx,1000h ;
|
mov bx, 1000h ;
|
||||||
mov cx,255 ; 256 symbols
|
mov cx, 255 ; 256 symbols
|
||||||
mov dx,0h ; 0 - position of first symbol
|
xor dx, dx ; 0 - position of first symbol
|
||||||
mov ax,1100h
|
mov ax, 1100h
|
||||||
int 10h
|
int 10h
|
||||||
end if
|
end if
|
||||||
|
|
||||||
@ -177,9 +180,8 @@ end if
|
|||||||
loop @b
|
loop @b
|
||||||
; draw spaces
|
; draw spaces
|
||||||
mov si, space_msg
|
mov si, space_msg
|
||||||
mov cx, 25 - d80x25_top_num - d80x25_bottom_num
|
mov dx, 25 - d80x25_top_num - d80x25_bottom_num
|
||||||
dfl1:
|
dfl1:
|
||||||
push cx
|
|
||||||
push si
|
push si
|
||||||
mov cx, 80
|
mov cx, 80
|
||||||
@@:
|
@@:
|
||||||
@ -187,8 +189,8 @@ dfl1:
|
|||||||
stosw
|
stosw
|
||||||
loop @b
|
loop @b
|
||||||
pop si
|
pop si
|
||||||
pop cx
|
dec dx
|
||||||
loop dfl1
|
jnz dfl1
|
||||||
; draw bottom
|
; draw bottom
|
||||||
mov si, d80x25_bottom
|
mov si, d80x25_bottom
|
||||||
mov cx, d80x25_bottom_num * 80
|
mov cx, d80x25_bottom_num * 80
|
||||||
@ -207,17 +209,17 @@ dfl1:
|
|||||||
mov bx, 0x4000
|
mov bx, 0x4000
|
||||||
pushf
|
pushf
|
||||||
pop ax
|
pop ax
|
||||||
mov dx,ax
|
mov dx, ax
|
||||||
xor ax,bx
|
xor ax, bx
|
||||||
push ax
|
push ax
|
||||||
popf
|
popf
|
||||||
pushf
|
pushf
|
||||||
pop ax
|
pop ax
|
||||||
and ax,bx
|
and ax, bx
|
||||||
and dx,bx
|
and dx, bx
|
||||||
cmp ax,dx
|
cmp ax, dx
|
||||||
jnz cpugood
|
jnz cpugood
|
||||||
mov si,not386
|
mov si, not386
|
||||||
sayerr:
|
sayerr:
|
||||||
call print
|
call print
|
||||||
jmp $
|
jmp $
|
||||||
@ -247,19 +249,19 @@ sayerr:
|
|||||||
; a) class 1, subclass 1, programming interface 0x80
|
; a) class 1, subclass 1, programming interface 0x80
|
||||||
mov ax, 0xB103
|
mov ax, 0xB103
|
||||||
mov ecx, 1*10000h + 1*100h + 0x80
|
mov ecx, 1*10000h + 1*100h + 0x80
|
||||||
mov si, 0 ; device index = 0
|
xor si, si ; device index = 0
|
||||||
int 0x1A
|
int 0x1A
|
||||||
jnc .found
|
jnc .found
|
||||||
; b) class 1, subclass 1, programming interface 0x8A
|
; b) class 1, subclass 1, programming interface 0x8A
|
||||||
mov ax, 0xB103
|
mov ax, 0xB103
|
||||||
mov ecx, 1*10000h + 1*100h + 0x8A
|
mov ecx, 1*10000h + 1*100h + 0x8A
|
||||||
mov si, 0 ; device index = 0
|
xor si, si ; device index = 0
|
||||||
int 0x1A
|
int 0x1A
|
||||||
jnc .found
|
jnc .found
|
||||||
; c) class 1, subclass 1, programming interface 0x85
|
; c) class 1, subclass 1, programming interface 0x85
|
||||||
mov ax, 0xB103
|
mov ax, 0xB103
|
||||||
mov ecx, 1*10000h + 1*100h + 0x85
|
mov ecx, 1*10000h + 1*100h + 0x85
|
||||||
mov si, 0
|
xor si, si
|
||||||
int 0x1A
|
int 0x1A
|
||||||
jc .nopci
|
jc .nopci
|
||||||
.found:
|
.found:
|
||||||
@ -273,28 +275,26 @@ sayerr:
|
|||||||
.nopci:
|
.nopci:
|
||||||
; \end{Mario79}
|
; \end{Mario79}
|
||||||
|
|
||||||
mov al,0xf6 ; Ñáðîñ êëàâèàòóðû, ðàçðåøèòü ñêàíèðîâàíèå
|
mov al, 0xf6 ; Ñáðîñ êëàâèàòóðû, ðàçðåøèòü ñêàíèðîâàíèå
|
||||||
out 0x60,al
|
out 0x60, al
|
||||||
xor cx,cx
|
xor cx, cx
|
||||||
wait_loop: ; variant 2
|
wait_loop: ; variant 2
|
||||||
; reading state of port of 8042 controller
|
; reading state of port of 8042 controller
|
||||||
in al,64h
|
in al, 64h
|
||||||
and al,00000010b ; ready flag
|
and al, 00000010b ; ready flag
|
||||||
; wait until 8042 controller is ready
|
; wait until 8042 controller is ready
|
||||||
loopnz wait_loop
|
loopnz wait_loop
|
||||||
|
|
||||||
; --------------- APM ---------------------
|
; --------------- APM ---------------------
|
||||||
push 0
|
and word [es:0x9044], 0 ; ver = 0.0 (APM not found)
|
||||||
pop es
|
|
||||||
mov word [es : 0x9044], 0 ; ver = 0.0 (APM not found)
|
|
||||||
mov ax, 0x5300
|
mov ax, 0x5300
|
||||||
xor bx, bx
|
xor bx, bx
|
||||||
int 0x15
|
int 0x15
|
||||||
jc apm_end ; APM not found
|
jc apm_end ; APM not found
|
||||||
test cx, 2
|
test cx, 2
|
||||||
jz apm_end ; APM 32-bit protected-mode interface not supported
|
jz apm_end ; APM 32-bit protected-mode interface not supported
|
||||||
mov [es : 0x9044], ax ; Save APM Version
|
mov [es:0x9044], ax ; Save APM Version
|
||||||
mov [es : 0x9046], cx ; Save APM flags
|
mov [es:0x9046], cx ; Save APM flags
|
||||||
|
|
||||||
; Write APM ver ----
|
; Write APM ver ----
|
||||||
and ax, 0xf0f
|
and ax, 0xf0f
|
||||||
@ -313,9 +313,6 @@ wait_loop: ; variant 2
|
|||||||
xor bx, bx
|
xor bx, bx
|
||||||
int 0x15
|
int 0x15
|
||||||
|
|
||||||
push 0
|
|
||||||
pop es
|
|
||||||
|
|
||||||
mov [es:0x9040], ebx
|
mov [es:0x9040], ebx
|
||||||
mov [es:0x9050], ax
|
mov [es:0x9050], ax
|
||||||
mov [es:0x9052], cx
|
mov [es:0x9052], cx
|
||||||
@ -326,20 +323,15 @@ apm_end:
|
|||||||
|
|
||||||
; DISPLAY VESA INFORMATION
|
; DISPLAY VESA INFORMATION
|
||||||
|
|
||||||
push 0
|
mov ax, 0x4f00
|
||||||
pop es
|
mov di, 0xa000
|
||||||
mov ax,0x4f00
|
|
||||||
mov di,0xa000
|
|
||||||
int 0x10
|
int 0x10
|
||||||
cmp ax,0x004f
|
cmp ax, 0x004f
|
||||||
mov si, novesa
|
mov si, novesa
|
||||||
jnz @f
|
jnz @f
|
||||||
mov bx, word [es:di+0x12]
|
mov ax, [es:di+4]
|
||||||
shl ebx,16
|
add ax, '0'*256+'0'
|
||||||
mov [es:0x9050], ebx
|
mov si, vervesa
|
||||||
mov ax,[es:di+4]
|
|
||||||
add ax,'0'*256+'0'
|
|
||||||
mov si,vervesa
|
|
||||||
mov [si+vervesa_off], ah
|
mov [si+vervesa_off], ah
|
||||||
mov [si+vervesa_off+2], al
|
mov [si+vervesa_off+2], al
|
||||||
@@: call print
|
@@: call print
|
||||||
@ -349,7 +341,7 @@ cfgmanager:
|
|||||||
; settings:
|
; settings:
|
||||||
; a) preboot_graph = graphical mode
|
; a) preboot_graph = graphical mode
|
||||||
; preboot_gprobe = probe this mode?
|
; preboot_gprobe = probe this mode?
|
||||||
; b) preboot_dma_write = use DMA write?
|
; b) preboot_dma = use DMA access?
|
||||||
; c) preboot_vrrm = use VRR?
|
; c) preboot_vrrm = use VRR?
|
||||||
; d) preboot_device = from what boot?
|
; d) preboot_device = from what boot?
|
||||||
mov di, preboot_graph
|
mov di, preboot_graph
|
||||||
@ -389,8 +381,9 @@ cfgmanager:
|
|||||||
@@:
|
@@:
|
||||||
mov [di], al
|
mov [di], al
|
||||||
.preboot_gr_end:
|
.preboot_gr_end:
|
||||||
cmp [di+preboot_dma_write-preboot_graph], 1
|
; following 6 lines set variables to 1 if its current value is 0
|
||||||
adc [di+preboot_dma_write-preboot_graph], 0
|
cmp [di+preboot_dma-preboot_graph], 1
|
||||||
|
adc [di+preboot_dma-preboot_graph], 0
|
||||||
cmp [di+preboot_vrrm-preboot_graph], 1
|
cmp [di+preboot_vrrm-preboot_graph], 1
|
||||||
adc [di+preboot_vrrm-preboot_graph], 0
|
adc [di+preboot_vrrm-preboot_graph], 0
|
||||||
cmp [di+preboot_device-preboot_graph], 1
|
cmp [di+preboot_device-preboot_graph], 1
|
||||||
@ -446,8 +439,15 @@ cfgmanager:
|
|||||||
mov si, linef
|
mov si, linef
|
||||||
call printplain
|
call printplain
|
||||||
mov si, dma_msg
|
mov si, dma_msg
|
||||||
cmp [preboot_dma_write], 1
|
call print
|
||||||
call .say_on_off
|
cmp [preboot_dma], 2
|
||||||
|
mov si, on_msg
|
||||||
|
jb @f
|
||||||
|
mov si, off_msg
|
||||||
|
ja @f
|
||||||
|
mov si, readonly_msg
|
||||||
|
@@:
|
||||||
|
call printplain
|
||||||
mov si, vrrm_msg
|
mov si, vrrm_msg
|
||||||
cmp [preboot_vrrm], 1
|
cmp [preboot_vrrm], 1
|
||||||
call .say_on_off
|
call .say_on_off
|
||||||
@ -495,9 +495,9 @@ cfgmanager:
|
|||||||
cmp al, 'd'
|
cmp al, 'd'
|
||||||
jnz .wait
|
jnz .wait
|
||||||
_setcursor 15,0
|
_setcursor 15,0
|
||||||
mov si,bdev
|
mov si, bdev
|
||||||
call print
|
call print
|
||||||
mov bx,'13'
|
mov bx, '13'
|
||||||
call getkey
|
call getkey
|
||||||
mov [preboot_device], al
|
mov [preboot_device], al
|
||||||
_setcursor 13,0
|
_setcursor 13,0
|
||||||
@ -532,9 +532,9 @@ cfgmanager:
|
|||||||
_setcursor 15,0
|
_setcursor 15,0
|
||||||
mov si, ask_dma
|
mov si, ask_dma
|
||||||
call print
|
call print
|
||||||
mov bx, '12'
|
mov bx, '13'
|
||||||
call getkey
|
call getkey
|
||||||
mov [preboot_dma_write], al
|
mov [preboot_dma], al
|
||||||
_setcursor 11,0
|
_setcursor 11,0
|
||||||
jmp .d
|
jmp .d
|
||||||
.change_c:
|
.change_c:
|
||||||
@ -553,8 +553,7 @@ cfgmanager:
|
|||||||
popf
|
popf
|
||||||
jz @f
|
jz @f
|
||||||
mov si, off_msg
|
mov si, off_msg
|
||||||
@@: call printplain
|
@@: jmp printplain
|
||||||
ret
|
|
||||||
; novesa and vervesa strings are not used at the moment of executing this code
|
; novesa and vervesa strings are not used at the moment of executing this code
|
||||||
virtual at novesa
|
virtual at novesa
|
||||||
.oldtimer dd ?
|
.oldtimer dd ?
|
||||||
@ -684,18 +683,18 @@ end if
|
|||||||
; address is gr_table+6*(ax-1)
|
; address is gr_table+6*(ax-1)
|
||||||
add ax, ax
|
add ax, ax
|
||||||
lea si, [gr_table + eax + eax*2 - 6]
|
lea si, [gr_table + eax + eax*2 - 6]
|
||||||
mov bx,[si+0]
|
mov bx, [si+0]
|
||||||
mov cx,[si+2]
|
mov cx, [si+2]
|
||||||
mov dx,[si+4]
|
mov dx, [si+4]
|
||||||
cmp al, 9*2
|
cmp al, 9*2
|
||||||
mov al, 32 ; BPP
|
mov al, 32 ; BPP
|
||||||
jb @f
|
jb @f
|
||||||
mov [es:0x9000], al
|
mov [es:0x9000], al
|
||||||
mov dword [es:0x9018], 0xFFFFFFFF; 0x800000
|
or dword [es:0x9018], 0xFFFFFFFF; 0x800000
|
||||||
@@:
|
@@:
|
||||||
mov [es:0x9008],bx
|
mov [es:0x9008], bx
|
||||||
mov [es:0x900A],cx
|
mov [es:0x900A], cx
|
||||||
mov [es:0x900C],dx
|
mov [es:0x900C], dx
|
||||||
test bh, bh
|
test bh, bh
|
||||||
jz nov
|
jz nov
|
||||||
|
|
||||||
@ -705,19 +704,18 @@ end if
|
|||||||
cmp [preboot_gprobe], 1
|
cmp [preboot_gprobe], 1
|
||||||
jz noprobe
|
jz noprobe
|
||||||
|
|
||||||
mov bx,0x100
|
mov bx, 0x100
|
||||||
newprobe:
|
newprobe:
|
||||||
inc bx
|
inc bx
|
||||||
cmp bx,0x17f
|
cmp bx, 0x17f
|
||||||
mov si,prnotfnd
|
mov si, prnotfnd
|
||||||
jz sayerr
|
jz invalid_video_mode
|
||||||
|
|
||||||
probemore:
|
probemore:
|
||||||
push cx
|
push cx
|
||||||
mov ax,0x4f01
|
mov ax, 0x4f01
|
||||||
mov cx,bx
|
mov cx, bx
|
||||||
and cx,0xfff
|
mov di, 0xa000
|
||||||
mov di,0xa000
|
|
||||||
int 0x10
|
int 0x10
|
||||||
pop cx
|
pop cx
|
||||||
|
|
||||||
@ -730,80 +728,85 @@ end if
|
|||||||
cmp byte [es:di+0x19], 32 ;24
|
cmp byte [es:di+0x19], 32 ;24
|
||||||
jb newprobe
|
jb newprobe
|
||||||
|
|
||||||
; add bx,0100000000000000b
|
; add bx, 0100000000000000b
|
||||||
or bh, 40h
|
or bh, 40h
|
||||||
mov [es:0x9008],bx
|
mov [es:0x9008], bx
|
||||||
|
|
||||||
noprobe:
|
noprobe:
|
||||||
|
|
||||||
|
|
||||||
; FIND VESA 2.0 LFB & BPP
|
; FIND VESA 2.0 LFB & BPP
|
||||||
|
|
||||||
mov ax,0x4f01
|
mov ax, 0x4f01
|
||||||
mov cx,bx
|
mov cx, bx
|
||||||
and cx,0xfff
|
and cx, 0xfff
|
||||||
mov di,0xa000
|
mov di, 0xa000
|
||||||
int 0x10
|
int 0x10
|
||||||
; LFB
|
; LFB
|
||||||
mov eax,[es:di+0x28]
|
mov eax, [es:di+0x28]
|
||||||
mov [es:0x9018],eax
|
mov [es:0x9018], eax
|
||||||
; ---- vbe voodoo
|
; ---- vbe voodoo
|
||||||
BytesPerLine equ 0x10
|
BytesPerLine equ 0x10
|
||||||
mov ax, [es:di+BytesPerLine]
|
mov ax, [es:di+BytesPerLine]
|
||||||
mov [es:0x9001],ax
|
mov [es:0x9001], ax
|
||||||
; BPP
|
; BPP
|
||||||
mov al,byte [es:di+0x19]
|
mov al, byte [es:di+0x19]
|
||||||
mov [es:0x9000],al
|
mov [es:0x9000], al
|
||||||
nov:
|
nov:
|
||||||
cmp al,24
|
cmp al, 24
|
||||||
mov si,bt24
|
mov si, bt24
|
||||||
jz bppl
|
jz bppl
|
||||||
cmp al,32
|
cmp al, 32
|
||||||
mov si,bt32
|
mov si, bt32
|
||||||
jz bppl
|
jz bppl
|
||||||
mov si,btns
|
mov si, btns
|
||||||
jmp sayerr
|
invalid_video_mode:
|
||||||
bppl:
|
call print
|
||||||
|
_setcursor (d80x25_top_num+2), 0
|
||||||
|
mov si, start_msg
|
||||||
|
call print
|
||||||
|
jmp cfgmanager.printcfg
|
||||||
|
bppl:
|
||||||
call print
|
call print
|
||||||
|
|
||||||
|
|
||||||
; FIND VESA 1.2 PM BANK SWITCH ADDRESS
|
; FIND VESA 1.2 PM BANK SWITCH ADDRESS
|
||||||
|
|
||||||
push es
|
push es
|
||||||
mov ax,0x4f0A
|
mov ax, 0x4f0A
|
||||||
xor bx, bx
|
xor bx, bx
|
||||||
int 0x10
|
int 0x10
|
||||||
xor eax,eax
|
xor eax, eax
|
||||||
mov ax,es
|
mov ax, es
|
||||||
shl eax,4
|
shl eax, 4
|
||||||
movzx ebx,di
|
movzx ebx, di
|
||||||
add eax,ebx
|
add eax, ebx
|
||||||
mov bx,[es:di]
|
mov bx, [es:di]
|
||||||
add eax,ebx
|
add eax, ebx
|
||||||
pop es
|
pop es
|
||||||
mov [es:0x9014],eax
|
mov [es:0x9014], eax
|
||||||
|
|
||||||
|
|
||||||
; GRAPHICS ACCELERATION
|
; GRAPHICS ACCELERATION
|
||||||
; force yes
|
; force yes
|
||||||
mov [es:0x901C], byte 1
|
mov [es:0x901C], byte 1
|
||||||
|
|
||||||
; DMA WRITE
|
; DMA ACCESS TO HD
|
||||||
|
|
||||||
mov al, [preboot_dma_write]
|
mov al, [preboot_dma]
|
||||||
mov [es:0x901F],al
|
mov [es:0x901F], al
|
||||||
|
|
||||||
; VRR_M USE
|
; VRR_M USE
|
||||||
|
|
||||||
mov al,[preboot_vrrm]
|
mov al,[preboot_vrrm]
|
||||||
mov [es:0x9030],al
|
mov [es:0x9030], al
|
||||||
mov [es:0x901E],byte 1
|
mov [es:0x901E], byte 1
|
||||||
|
|
||||||
; BOOT DEVICE
|
; BOOT DEVICE
|
||||||
|
|
||||||
mov al, [preboot_device]
|
mov al, [preboot_device]
|
||||||
dec al
|
dec al
|
||||||
mov [boot_dev],al
|
mov [boot_dev], al
|
||||||
|
|
||||||
; READ DISKETTE TO MEMORY
|
; READ DISKETTE TO MEMORY
|
||||||
|
|
||||||
@ -1004,17 +1007,17 @@ sayerr_floppy:
|
|||||||
; readdone:
|
; readdone:
|
||||||
; pop ax
|
; pop ax
|
||||||
|
|
||||||
mov si,backspace2
|
mov si, backspace2
|
||||||
call printplain
|
call printplain
|
||||||
mov si,okt
|
mov si, okt
|
||||||
call printplain
|
call printplain
|
||||||
no_sys_on_floppy:
|
no_sys_on_floppy:
|
||||||
xor ax, ax ; reset drive
|
xor ax, ax ; reset drive
|
||||||
xor dx, dx
|
xor dx, dx
|
||||||
int 0x13
|
int 0x13
|
||||||
mov dx,0x3f2 ; floppy motor off
|
mov dx, 0x3f2 ; floppy motor off
|
||||||
mov al,0
|
mov al, 0
|
||||||
out dx,al
|
out dx, al
|
||||||
|
|
||||||
|
|
||||||
; SET GRAPHICS
|
; SET GRAPHICS
|
||||||
@ -1022,40 +1025,40 @@ sayerr_floppy:
|
|||||||
xor ax, ax
|
xor ax, ax
|
||||||
mov es, ax
|
mov es, ax
|
||||||
|
|
||||||
mov ax,[es:0x9008] ; vga & 320x200
|
mov ax, [es:0x9008] ; vga & 320x200
|
||||||
mov bx, ax
|
mov bx, ax
|
||||||
cmp ax,0x13
|
cmp ax, 0x13
|
||||||
je setgr
|
je setgr
|
||||||
cmp ax,0x12
|
cmp ax, 0x12
|
||||||
je setgr
|
je setgr
|
||||||
mov ax,0x4f02 ; Vesa
|
mov ax, 0x4f02 ; Vesa
|
||||||
setgr:
|
setgr:
|
||||||
int 0x10
|
int 0x10
|
||||||
test ah,ah
|
test ah, ah
|
||||||
mov si, fatalsel
|
mov si, fatalsel
|
||||||
jnz sayerr
|
jnz sayerr
|
||||||
; set mode 0x12 graphics registers:
|
; set mode 0x12 graphics registers:
|
||||||
cmp bx,0x12
|
cmp bx, 0x12
|
||||||
jne gmok2
|
jne gmok2
|
||||||
|
|
||||||
mov al,0x05
|
mov al, 0x05
|
||||||
mov dx,0x03ce
|
mov dx, 0x03ce
|
||||||
push dx
|
push dx
|
||||||
out dx,al ; select GDC mode register
|
out dx, al ; select GDC mode register
|
||||||
mov al,0x02
|
mov al, 0x02
|
||||||
inc dx
|
inc dx
|
||||||
out dx,al ; set write mode 2
|
out dx, al ; set write mode 2
|
||||||
|
|
||||||
mov al,0x02
|
mov al, 0x02
|
||||||
mov dx,0x03c4
|
mov dx, 0x03c4
|
||||||
out dx,al ; select VGA sequencer map mask register
|
out dx, al ; select VGA sequencer map mask register
|
||||||
mov al,0x0f
|
mov al, 0x0f
|
||||||
inc dx
|
inc dx
|
||||||
out dx,al ; set mask for all planes 0-3
|
out dx, al ; set mask for all planes 0-3
|
||||||
|
|
||||||
mov al,0x08
|
mov al, 0x08
|
||||||
pop dx
|
pop dx
|
||||||
out dx,al ; select GDC bit mask register
|
out dx, al ; select GDC bit mask register
|
||||||
; for writes to 0x03cf
|
; for writes to 0x03cf
|
||||||
gmok2:
|
gmok2:
|
||||||
push ds
|
push ds
|
||||||
|
@ -34,7 +34,7 @@ vrrmprint db "Apply VRR? (picture frequency greater than 60Hz"
|
|||||||
; db " Select port [1-3]: ",0
|
; db " Select port [1-3]: ",0
|
||||||
;no_com1 db 13,10,186, " No COM1 mouse",0
|
;no_com1 db 13,10,186, " No COM1 mouse",0
|
||||||
;no_com2 db 13,10,186, " No COM2 mouse",0
|
;no_com2 db 13,10,186, " No COM2 mouse",0
|
||||||
ask_dma db "Use DMA for HDD writing? [1-yes/2-no]: ",0
|
ask_dma db "Use DMA for HDD access? [1-yes, 2-only for reading, 3-no]: ",0
|
||||||
;gr_direct db 186," Use direct LFB writing? "
|
;gr_direct db 186," Use direct LFB writing? "
|
||||||
; db "[1-yes/2-no] ? ",0
|
; db "[1-yes/2-no] ? ",0
|
||||||
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
||||||
@ -80,9 +80,10 @@ mode9 db "320x200, EGA/CGA 256 colors",0
|
|||||||
mode10 db "640x480, VGA 16 colors",0
|
mode10 db "640x480, VGA 16 colors",0
|
||||||
probeno_msg db " (standard mode)",0
|
probeno_msg db " (standard mode)",0
|
||||||
probeok_msg db " (check nonstandard modes)",0
|
probeok_msg db " (check nonstandard modes)",0
|
||||||
dma_msg db " [b] Use DMA for HDD writing:",0
|
dma_msg db " [b] Use DMA for HDD access:",0
|
||||||
on_msg db " on",13,10,0
|
on_msg db " on",13,10,0
|
||||||
off_msg db " off",13,10,0
|
off_msg db " off",13,10,0
|
||||||
|
readonly_msg db " only for reading",13,10,0
|
||||||
vrrm_msg db " [c] Use VRR:",0
|
vrrm_msg db " [c] Use VRR:",0
|
||||||
preboot_device_msg db " [d] Floppy image: ",0
|
preboot_device_msg db " [d] Floppy image: ",0
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
|
@ -34,7 +34,7 @@ vrrmprint db "Kinnita VRR? (ekraani sagedus suurem kui 60Hz"
|
|||||||
; db " Vali port [1-3]: ",0
|
; db " Vali port [1-3]: ",0
|
||||||
;no_com1 db 13,10,186, " No COM1 mouse",0
|
;no_com1 db 13,10,186, " No COM1 mouse",0
|
||||||
;no_com2 db 13,10,186, " No COM2 mouse",0
|
;no_com2 db 13,10,186, " No COM2 mouse",0
|
||||||
ask_dma db "Use DMA for HDD writing? [1-jah/2-ei]: ",0
|
ask_dma db "Use DMA for HDD access? [1-yes, 2-only for reading, 3-no]: ",0
|
||||||
;gr_direct db 186," Use direct LFB writing? "
|
;gr_direct db 186," Use direct LFB writing? "
|
||||||
; db "[1-yes/2-no] ? ",0
|
; db "[1-yes/2-no] ? ",0
|
||||||
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
;mem_model db 13,10,186," Motherboard memory [1-16 Mb / 2-32 Mb / "
|
||||||
@ -80,9 +80,10 @@ mode9 db "320x200, EGA/CGA 256 v
|
|||||||
mode10 db "640x480, VGA 16 värvi",0
|
mode10 db "640x480, VGA 16 värvi",0
|
||||||
probeno_msg db " (standard reziim)",0
|
probeno_msg db " (standard reziim)",0
|
||||||
probeok_msg db " (kontrolli ebastandardseid reziime)",0
|
probeok_msg db " (kontrolli ebastandardseid reziime)",0
|
||||||
dma_msg db " [b] Use DMA for HDD writing:",0
|
dma_msg db " [b] Use DMA for HDD access:",0
|
||||||
on_msg db " sees",13,10,0
|
on_msg db " sees",13,10,0
|
||||||
off_msg db " väljas",13,10,0
|
off_msg db " väljas",13,10,0
|
||||||
|
readonly_msg db " only for reading",13,10,0
|
||||||
vrrm_msg db " [c] Kasuta VRR:",0
|
vrrm_msg db " [c] Kasuta VRR:",0
|
||||||
preboot_device_msg db " [d] Disketi kujutis: ",0
|
preboot_device_msg db " [d] Disketi kujutis: ",0
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
|
@ -39,7 +39,7 @@ vrrmprint db "VRR verwenden? (Monitorfrequenz groesser als 60Hz"
|
|||||||
; db " Waehle Port [1-3]: ",0
|
; db " Waehle Port [1-3]: ",0
|
||||||
;no_com1 db 13,10,186, " Keine COM1 Maus",0
|
;no_com1 db 13,10,186, " Keine COM1 Maus",0
|
||||||
;no_com2 db 13,10,186, " Keine COM2 Maus",0
|
;no_com2 db 13,10,186, " Keine COM2 Maus",0
|
||||||
ask_dma db "Nutze DMA zum HDD Aufschreiben? [1-ja/2-nein]: ",0
|
ask_dma db "Nutze DMA zum HDD Zugriff? [1-ja, 2-allein fur Lesen, 3-nein]: ",0
|
||||||
;gr_direct db 186," Benutze direct LFB? "
|
;gr_direct db 186," Benutze direct LFB? "
|
||||||
; db "[1-ja/2-nein] ? ",0
|
; db "[1-ja/2-nein] ? ",0
|
||||||
;mem_model db 13,10,186," Hauptspeicher [1-16 Mb / 2-32 Mb / "
|
;mem_model db 13,10,186," Hauptspeicher [1-16 Mb / 2-32 Mb / "
|
||||||
@ -88,6 +88,7 @@ probeok_msg db " (teste nicht-standard Modi)",0
|
|||||||
dma_msg db " [b] Nutze DMA zum HDD Aufschreiben:",0
|
dma_msg db " [b] Nutze DMA zum HDD Aufschreiben:",0
|
||||||
on_msg db " an",13,10,0
|
on_msg db " an",13,10,0
|
||||||
off_msg db " aus",13,10,0
|
off_msg db " aus",13,10,0
|
||||||
|
readonly_msg db " fur Lesen",13,10,0
|
||||||
vrrm_msg db " [c] Nutze VRR:",0
|
vrrm_msg db " [c] Nutze VRR:",0
|
||||||
preboot_device_msg db " [d] Diskettenimage: ",0
|
preboot_device_msg db " [d] Diskettenimage: ",0
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
|
@ -34,7 +34,7 @@ vrrmprint db "
|
|||||||
; db " ‚ë¡¥à¨â¥ ¯®àâ [1-3]: ",0
|
; db " ‚ë¡¥à¨â¥ ¯®àâ [1-3]: ",0
|
||||||
;no_com1 db 13,10,186," No COM1 mouse",0
|
;no_com1 db 13,10,186," No COM1 mouse",0
|
||||||
;no_com2 db 13,10,186," No COM2 mouse",0
|
;no_com2 db 13,10,186," No COM2 mouse",0
|
||||||
ask_dma db "<EFBFBD>α―®«μ§®Ά βμ DMA ¤«ο § ―¨α¨ HDD? [1-¤ /2-¥β]: ",0
|
ask_dma db "ˆá¯®«ì§®¢ âì DMA ¤«ï ¤®áâ㯠ª HDD? [1-¤ , 2-⮫쪮 ç⥨¥, 3-¥â]: ",0
|
||||||
;gr_direct db 186," ˆá¯®«ì§®¢ âì «¨¥©ë© ¢¨¤¥®¡ãä¥à? "
|
;gr_direct db 186," ˆá¯®«ì§®¢ âì «¨¥©ë© ¢¨¤¥®¡ãä¥à? "
|
||||||
; db "[1-¤ /2-¥â]: ",0
|
; db "[1-¤ /2-¥â]: ",0
|
||||||
;mem_model db 13,10,186," Ž¡ê+¬ ¯ ¬ï⨠[1-16 Mb / 2-32 Mb / "
|
;mem_model db 13,10,186," Ž¡ê+¬ ¯ ¬ï⨠[1-16 Mb / 2-32 Mb / "
|
||||||
@ -80,9 +80,10 @@ mode9 db "320x200, EGA/CGA 256 梥⮢",0
|
|||||||
mode10 db "640x480, VGA 16 梥⮢",0
|
mode10 db "640x480, VGA 16 梥⮢",0
|
||||||
probeno_msg db " (áâ ¤ àâë© ¢¨¤¥®à¥¦¨¬)",0
|
probeno_msg db " (áâ ¤ àâë© ¢¨¤¥®à¥¦¨¬)",0
|
||||||
probeok_msg db " (¯à®¢¥à¨âì ¥áâ ¤ àâë¥ à¥¦¨¬ë)",0
|
probeok_msg db " (¯à®¢¥à¨âì ¥áâ ¤ àâë¥ à¥¦¨¬ë)",0
|
||||||
dma_msg db " [b] <EFBFBD>α―®«μ§®Ά ¨¥ DMA ¤«ο § ―¨α¨ HDD:",0
|
dma_msg db " [b] ˆá¯®«ì§®¢ ¨¥ DMA ¤«ï ¤®áâ㯠ª HDD:",0
|
||||||
on_msg db " ¢ª«",13,10,0
|
on_msg db " ¢ª«",13,10,0
|
||||||
off_msg db " ¢ëª«",13,10,0
|
off_msg db " ¢ëª«",13,10,0
|
||||||
|
readonly_msg db " ⮫쪮 ç⥨¥",13,10,0
|
||||||
vrrm_msg db " [c] ˆá¯®«ì§®¢ ¨¥ VRR:",0
|
vrrm_msg db " [c] ˆá¯®«ì§®¢ ¨¥ VRR:",0
|
||||||
preboot_device_msg db " [d] Ž¡à § ¤¨áª¥âë: ",0
|
preboot_device_msg db " [d] Ž¡à § ¤¨áª¥âë: ",0
|
||||||
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
preboot_device_msgs dw 0,pdm1,pdm2,pdm3
|
||||||
|
@ -18,7 +18,7 @@ display_atboot db 0 ; show boot screen messages ( 2-no )
|
|||||||
preboot_graph db 0 ; graph mode
|
preboot_graph db 0 ; graph mode
|
||||||
preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes)
|
preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes)
|
||||||
preboot_vrrm db 0 ; use VRR_M (1-yes, 2- no)
|
preboot_vrrm db 0 ; use VRR_M (1-yes, 2- no)
|
||||||
preboot_dma_write db 0 ; use DMA for writing to HDD (1-yes, 2-no)
|
preboot_dma db 0 ; use DMA for access to HDD (1-always, 2-only for read, 3-never)
|
||||||
preboot_device db 0 ; boot device
|
preboot_device db 0 ; boot device
|
||||||
; (1-floppy 2-harddisk 3-kernel restart)
|
; (1-floppy 2-harddisk 3-kernel restart)
|
||||||
;!!!! 0 - autodetect !!!!
|
;!!!! 0 - autodetect !!!!
|
||||||
|
@ -321,8 +321,8 @@ high_code:
|
|||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
; movzx eax,byte [BOOT_VAR+0x9010] ; mouse port
|
; movzx eax,byte [BOOT_VAR+0x9010] ; mouse port
|
||||||
; mov [0xF604],byte 1 ;al
|
; mov [0xF604],byte 1 ;al
|
||||||
mov al, [BOOT_VAR+0x901F] ; DMA writing
|
mov al, [BOOT_VAR+0x901F] ; DMA access
|
||||||
mov [allow_dma_write], al
|
mov [allow_dma_access], al
|
||||||
mov al,[BOOT_VAR+0x9000] ; bpp
|
mov al,[BOOT_VAR+0x9000] ; bpp
|
||||||
mov [ScreenBPP],al
|
mov [ScreenBPP],al
|
||||||
movzx eax,word [BOOT_VAR+0x900A] ; X max
|
movzx eax,word [BOOT_VAR+0x900A] ; X max
|
||||||
|
0
kernel/trunk/unpacker.inc
Executable file → Normal file
0
kernel/trunk/unpacker.inc
Executable file → Normal file
Loading…
Reference in New Issue
Block a user