* 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:
Evgeny Grechnikov (Diamond)
2007-05-21 13:25:02 +00:00
parent 4c1ad6f2c7
commit 875ba74b27
9 changed files with 573 additions and 562 deletions

10
kernel/trunk/blkdev/hd_drv.inc Executable file → Normal file
View File

@@ -54,6 +54,9 @@ hd_read:
call find_empty_slot ; ret in edi
cmp [hd_error],0
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
jnz .nodma
call hd_read_dma
@@ -229,8 +232,9 @@ write_cache:
cmp eax,[PARTITION_END]
ja danger
cmp [allow_dma_write], 1
jnz .nodma
; DMA write is permitted only if [allow_dma_access]=1
cmp [allow_dma_access], 2
jae .nodma
cmp [dma_hdd], 1
jnz .nodma
; <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -601,7 +605,7 @@ cache_chain_size db 0
cache_chain_started db 0
dma_task_switched db 0
dma_hdd db 0
allow_dma_write db 0
allow_dma_access db 0
endg
align 4

View File

@@ -109,6 +109,7 @@ sayerr_plain:
start_of_code:
cld
; \begin{diamond}[02.12.2005]
; if bootloader sets ax = 'KL', then ds:si points to loader block
cmp ax, 'KL'
jnz @f
mov word [cs:cfgmanager.loader_block], si
@@ -116,7 +117,9 @@ start_of_code:
@@:
; \end{diamond}[02.12.2005]
cmp cx,'HA' ; <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
; 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
cmp dx,'RD'
jnz no_hd_load
@@ -140,25 +143,25 @@ no_hd_load:
if lang eq ru
; Load & set russian VGA font (RU.INC)
mov bp, RU_FNT1 ; RU_FNT1 - First part
mov bx,1000h ; 768 bytes
mov cx,30h ; 48 symbols
mov dx,80h ; 128 - position of first symbol
mov ax,1100h
mov bx, 1000h ; 768 bytes
mov cx, 30h ; 48 symbols
mov dx, 80h ; 128 - position of first symbol
mov ax, 1100h
int 10h
mov bp,RU_FNT2 ; RU_FNT2 -Second part
mov bx,1000h ; 512 bytes
mov cx,20h ; 32 symbols
mov dx,0E0h ; 224 - position of first symbol
mov ax,1100h
mov bp, RU_FNT2 ; RU_FNT2 -Second part
mov bx, 1000h ; 512 bytes
mov cx, 20h ; 32 symbols
mov dx, 0E0h ; 224 - position of first symbol
mov ax, 1100h
int 10h
; End set VGA russian font
else if lang eq et
mov bp,ET_FNT ; ET_FNT1
mov bx,1000h ;
mov cx,255 ; 256 symbols
mov dx,0h ; 0 - position of first symbol
mov ax,1100h
mov bp, ET_FNT ; ET_FNT1
mov bx, 1000h ;
mov cx, 255 ; 256 symbols
xor dx, dx ; 0 - position of first symbol
mov ax, 1100h
int 10h
end if
@@ -177,9 +180,8 @@ end if
loop @b
; draw spaces
mov si, space_msg
mov cx, 25 - d80x25_top_num - d80x25_bottom_num
mov dx, 25 - d80x25_top_num - d80x25_bottom_num
dfl1:
push cx
push si
mov cx, 80
@@:
@@ -187,8 +189,8 @@ dfl1:
stosw
loop @b
pop si
pop cx
loop dfl1
dec dx
jnz dfl1
; draw bottom
mov si, d80x25_bottom
mov cx, d80x25_bottom_num * 80
@@ -207,17 +209,17 @@ dfl1:
mov bx, 0x4000
pushf
pop ax
mov dx,ax
xor ax,bx
mov dx, ax
xor ax, bx
push ax
popf
pushf
pop ax
and ax,bx
and dx,bx
cmp ax,dx
and ax, bx
and dx, bx
cmp ax, dx
jnz cpugood
mov si,not386
mov si, not386
sayerr:
call print
jmp $
@@ -247,19 +249,19 @@ sayerr:
; a) class 1, subclass 1, programming interface 0x80
mov ax, 0xB103
mov ecx, 1*10000h + 1*100h + 0x80
mov si, 0 ; device index = 0
xor si, si ; device index = 0
int 0x1A
jnc .found
; b) class 1, subclass 1, programming interface 0x8A
mov ax, 0xB103
mov ecx, 1*10000h + 1*100h + 0x8A
mov si, 0 ; device index = 0
xor si, si ; device index = 0
int 0x1A
jnc .found
; c) class 1, subclass 1, programming interface 0x85
mov ax, 0xB103
mov ecx, 1*10000h + 1*100h + 0x85
mov si, 0
xor si, si
int 0x1A
jc .nopci
.found:
@@ -273,28 +275,26 @@ sayerr:
.nopci:
; \end{Mario79}
mov al,0xf6 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
out 0x60,al
xor cx,cx
mov al, 0xf6 ; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
out 0x60, al
xor cx, cx
wait_loop: ; variant 2
; reading state of port of 8042 controller
in al,64h
and al,00000010b ; ready flag
in al, 64h
and al, 00000010b ; ready flag
; wait until 8042 controller is ready
loopnz wait_loop
; --------------- APM ---------------------
push 0
pop es
mov word [es : 0x9044], 0 ; ver = 0.0 (APM not found)
and word [es:0x9044], 0 ; ver = 0.0 (APM not found)
mov ax, 0x5300
xor bx, bx
int 0x15
jc apm_end ; APM not found
test cx, 2
jz apm_end ; APM 32-bit protected-mode interface not supported
mov [es : 0x9044], ax ; Save APM Version
mov [es : 0x9046], cx ; Save APM flags
mov [es:0x9044], ax ; Save APM Version
mov [es:0x9046], cx ; Save APM flags
; Write APM ver ----
and ax, 0xf0f
@@ -313,9 +313,6 @@ wait_loop: ; variant 2
xor bx, bx
int 0x15
push 0
pop es
mov [es:0x9040], ebx
mov [es:0x9050], ax
mov [es:0x9052], cx
@@ -326,20 +323,15 @@ apm_end:
; DISPLAY VESA INFORMATION
push 0
pop es
mov ax,0x4f00
mov di,0xa000
mov ax, 0x4f00
mov di, 0xa000
int 0x10
cmp ax,0x004f
cmp ax, 0x004f
mov si, novesa
jnz @f
mov bx, word [es:di+0x12]
shl ebx,16
mov [es:0x9050], ebx
mov ax,[es:di+4]
add ax,'0'*256+'0'
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+2], al
@@: call print
@@ -349,7 +341,7 @@ cfgmanager:
; settings:
; a) preboot_graph = graphical mode
; preboot_gprobe = probe this mode?
; b) preboot_dma_write = use DMA write?
; b) preboot_dma = use DMA access?
; c) preboot_vrrm = use VRR?
; d) preboot_device = from what boot?
mov di, preboot_graph
@@ -389,8 +381,9 @@ cfgmanager:
@@:
mov [di], al
.preboot_gr_end:
cmp [di+preboot_dma_write-preboot_graph], 1
adc [di+preboot_dma_write-preboot_graph], 0
; following 6 lines set variables to 1 if its current value is 0
cmp [di+preboot_dma-preboot_graph], 1
adc [di+preboot_dma-preboot_graph], 0
cmp [di+preboot_vrrm-preboot_graph], 1
adc [di+preboot_vrrm-preboot_graph], 0
cmp [di+preboot_device-preboot_graph], 1
@@ -446,8 +439,15 @@ cfgmanager:
mov si, linef
call printplain
mov si, dma_msg
cmp [preboot_dma_write], 1
call .say_on_off
call print
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
cmp [preboot_vrrm], 1
call .say_on_off
@@ -495,9 +495,9 @@ cfgmanager:
cmp al, 'd'
jnz .wait
_setcursor 15,0
mov si,bdev
mov si, bdev
call print
mov bx,'13'
mov bx, '13'
call getkey
mov [preboot_device], al
_setcursor 13,0
@@ -532,9 +532,9 @@ cfgmanager:
_setcursor 15,0
mov si, ask_dma
call print
mov bx, '12'
mov bx, '13'
call getkey
mov [preboot_dma_write], al
mov [preboot_dma], al
_setcursor 11,0
jmp .d
.change_c:
@@ -553,8 +553,7 @@ cfgmanager:
popf
jz @f
mov si, off_msg
@@: call printplain
ret
@@: jmp printplain
; novesa and vervesa strings are not used at the moment of executing this code
virtual at novesa
.oldtimer dd ?
@@ -684,18 +683,18 @@ end if
; address is gr_table+6*(ax-1)
add ax, ax
lea si, [gr_table + eax + eax*2 - 6]
mov bx,[si+0]
mov cx,[si+2]
mov dx,[si+4]
mov bx, [si+0]
mov cx, [si+2]
mov dx, [si+4]
cmp al, 9*2
mov al, 32 ; BPP
jb @f
mov [es:0x9000], al
mov dword [es:0x9018], 0xFFFFFFFF; 0x800000
@@:
mov [es:0x9008],bx
mov [es:0x900A],cx
mov [es:0x900C],dx
or dword [es:0x9018], 0xFFFFFFFF; 0x800000
@@:
mov [es:0x9008], bx
mov [es:0x900A], cx
mov [es:0x900C], dx
test bh, bh
jz nov
@@ -705,19 +704,18 @@ end if
cmp [preboot_gprobe], 1
jz noprobe
mov bx,0x100
mov bx, 0x100
newprobe:
inc bx
cmp bx,0x17f
mov si,prnotfnd
jz sayerr
cmp bx, 0x17f
mov si, prnotfnd
jz invalid_video_mode
probemore:
push cx
mov ax,0x4f01
mov cx,bx
and cx,0xfff
mov di,0xa000
mov ax, 0x4f01
mov cx, bx
mov di, 0xa000
int 0x10
pop cx
@@ -730,80 +728,85 @@ end if
cmp byte [es:di+0x19], 32 ;24
jb newprobe
; add bx,0100000000000000b
; add bx, 0100000000000000b
or bh, 40h
mov [es:0x9008],bx
mov [es:0x9008], bx
noprobe:
; FIND VESA 2.0 LFB & BPP
mov ax,0x4f01
mov cx,bx
and cx,0xfff
mov di,0xa000
mov ax, 0x4f01
mov cx, bx
and cx, 0xfff
mov di, 0xa000
int 0x10
; LFB
mov eax,[es:di+0x28]
mov [es:0x9018],eax
mov eax, [es:di+0x28]
mov [es:0x9018], eax
; ---- vbe voodoo
BytesPerLine equ 0x10
mov ax, [es:di+BytesPerLine]
mov [es:0x9001],ax
mov [es:0x9001], ax
; BPP
mov al,byte [es:di+0x19]
mov [es:0x9000],al
nov:
cmp al,24
mov si,bt24
mov al, byte [es:di+0x19]
mov [es:0x9000], al
nov:
cmp al, 24
mov si, bt24
jz bppl
cmp al,32
mov si,bt32
cmp al, 32
mov si, bt32
jz bppl
mov si,btns
jmp sayerr
bppl:
mov si, btns
invalid_video_mode:
call print
_setcursor (d80x25_top_num+2), 0
mov si, start_msg
call print
jmp cfgmanager.printcfg
bppl:
call print
; FIND VESA 1.2 PM BANK SWITCH ADDRESS
push es
mov ax,0x4f0A
mov ax, 0x4f0A
xor bx, bx
int 0x10
xor eax,eax
mov ax,es
shl eax,4
movzx ebx,di
add eax,ebx
mov bx,[es:di]
add eax,ebx
xor eax, eax
mov ax, es
shl eax, 4
movzx ebx, di
add eax, ebx
mov bx, [es:di]
add eax, ebx
pop es
mov [es:0x9014],eax
mov [es:0x9014], eax
; GRAPHICS ACCELERATION
; force yes
mov [es:0x901C], byte 1
; DMA WRITE
; DMA ACCESS TO HD
mov al, [preboot_dma_write]
mov [es:0x901F],al
mov al, [preboot_dma]
mov [es:0x901F], al
; VRR_M USE
mov al,[preboot_vrrm]
mov [es:0x9030],al
mov [es:0x901E],byte 1
mov [es:0x9030], al
mov [es:0x901E], byte 1
; BOOT DEVICE
mov al, [preboot_device]
dec al
mov [boot_dev],al
mov [boot_dev], al
; READ DISKETTE TO MEMORY
@@ -1004,17 +1007,17 @@ sayerr_floppy:
; readdone:
; pop ax
mov si,backspace2
mov si, backspace2
call printplain
mov si,okt
mov si, okt
call printplain
no_sys_on_floppy:
no_sys_on_floppy:
xor ax, ax ; reset drive
xor dx, dx
int 0x13
mov dx,0x3f2 ; floppy motor off
mov al,0
out dx,al
mov dx, 0x3f2 ; floppy motor off
mov al, 0
out dx, al
; SET GRAPHICS
@@ -1022,40 +1025,40 @@ sayerr_floppy:
xor ax, ax
mov es, ax
mov ax,[es:0x9008] ; vga & 320x200
mov ax, [es:0x9008] ; vga & 320x200
mov bx, ax
cmp ax,0x13
cmp ax, 0x13
je setgr
cmp ax,0x12
cmp ax, 0x12
je setgr
mov ax,0x4f02 ; Vesa
mov ax, 0x4f02 ; Vesa
setgr:
int 0x10
test ah,ah
test ah, ah
mov si, fatalsel
jnz sayerr
; set mode 0x12 graphics registers:
cmp bx,0x12
cmp bx, 0x12
jne gmok2
mov al,0x05
mov dx,0x03ce
mov al, 0x05
mov dx, 0x03ce
push dx
out dx,al ; select GDC mode register
mov al,0x02
out dx, al ; select GDC mode register
mov al, 0x02
inc dx
out dx,al ; set write mode 2
out dx, al ; set write mode 2
mov al,0x02
mov dx,0x03c4
out dx,al ; select VGA sequencer map mask register
mov al,0x0f
mov al, 0x02
mov dx, 0x03c4
out dx, al ; select VGA sequencer map mask register
mov al, 0x0f
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
out dx,al ; select GDC bit mask register
out dx, al ; select GDC bit mask register
; for writes to 0x03cf
gmok2:
push ds

View File

@@ -34,7 +34,7 @@ vrrmprint db "Apply VRR? (picture frequency greater than 60Hz"
; db " Select port [1-3]: ",0
;no_com1 db 13,10,186, " No COM1 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? "
; db "[1-yes/2-no] ? ",0
;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
probeno_msg db " (standard mode)",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
off_msg db " off",13,10,0
readonly_msg db " only for reading",13,10,0
vrrm_msg db " [c] Use VRR:",0
preboot_device_msg db " [d] Floppy image: ",0
preboot_device_msgs dw 0,pdm1,pdm2,pdm3

View File

@@ -34,7 +34,7 @@ vrrmprint db "Kinnita VRR? (ekraani sagedus suurem kui 60Hz"
; db " Vali port [1-3]: ",0
;no_com1 db 13,10,186, " No COM1 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? "
; db "[1-yes/2-no] ? ",0
;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
probeno_msg db " (standard reziim)",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
off_msg db " v<>ljas",13,10,0
readonly_msg db " only for reading",13,10,0
vrrm_msg db " [c] Kasuta VRR:",0
preboot_device_msg db " [d] Disketi kujutis: ",0
preboot_device_msgs dw 0,pdm1,pdm2,pdm3

View File

@@ -39,7 +39,7 @@ vrrmprint db "VRR verwenden? (Monitorfrequenz groesser als 60Hz"
; db " Waehle Port [1-3]: ",0
;no_com1 db 13,10,186, " Keine COM1 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? "
; db "[1-ja/2-nein] ? ",0
;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
on_msg db " an",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
preboot_device_msg db " [d] Diskettenimage: ",0
preboot_device_msgs dw 0,pdm1,pdm2,pdm3

View File

@@ -34,7 +34,7 @@ vrrmprint db "
; db " <20><EFBFBD><EBA1A5><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> [1-3]: ",0
;no_com1 db 13,10,186," No COM1 mouse",0
;no_com2 db 13,10,186," No COM2 mouse",0
ask_dma db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> HDD? [1-<2D><>/2-<2D><><EFBFBD>]: ",0
ask_dma db "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> HDD? [1-<2D><>, 2-⮫쪮 <20><EFBFBD><E2A5AD>, 3-<2D><><EFBFBD>]: ",0
;gr_direct db 186," <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? "
; db "[1-<2D><>/2-<2D><><EFBFBD>]: ",0
;mem_model db 13,10,186," <20><><EFBFBD>+<2B> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> [1-16 Mb / 2-32 Mb / "
@@ -80,9 +80,10 @@ mode9 db "320x200, EGA/CGA 256 梥⮢",0
mode10 db "640x480, VGA 16 梥⮢",0
probeno_msg db " (<28><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E0A5A6>)",0
probeok_msg db " (<28><EFBFBD><E0AEA2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><E2A0AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <><E0A5A6><EFBFBD>)",0
dma_msg db " [b] <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD> HDD:",0
dma_msg db " [b] <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD> DMA <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> HDD:",0
on_msg db " <20><><EFBFBD>",13,10,0
off_msg db " <20>",13,10,0
readonly_msg db " ⮫쪮 <20><EFBFBD><E2A5AD>",13,10,0
vrrm_msg db " [c] <20><EFBFBD><EFBFBD><ECA7AE><EFBFBD><EFBFBD><EFBFBD> VRR:",0
preboot_device_msg db " [d] <20><><20><><EFBFBD><E1AAA5>: ",0
preboot_device_msgs dw 0,pdm1,pdm2,pdm3

View File

@@ -18,7 +18,7 @@ display_atboot db 0 ; show boot screen messages ( 2-no )
preboot_graph db 0 ; graph mode
preboot_gprobe db 0 ; probe vesa3 videomodes (1-no, 2-yes)
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
; (1-floppy 2-harddisk 3-kernel restart)
;!!!! 0 - autodetect !!!!

View File

@@ -321,8 +321,8 @@ high_code:
; -----------------------------------------
; movzx eax,byte [BOOT_VAR+0x9010] ; mouse port
; mov [0xF604],byte 1 ;al
mov al, [BOOT_VAR+0x901F] ; DMA writing
mov [allow_dma_write], al
mov al, [BOOT_VAR+0x901F] ; DMA access
mov [allow_dma_access], al
mov al,[BOOT_VAR+0x9000] ; bpp
mov [ScreenBPP],al
movzx eax,word [BOOT_VAR+0x900A] ; X max

0
kernel/trunk/unpacker.inc Executable file → Normal file
View File