109,6 → 109,7 |
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 |
@@: |
; \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 |
cmp dx,'RD' |
jnz no_hd_load |
157,7 → 160,7 |
mov bp,ET_FNT ; ET_FNT1 |
mov bx,1000h ; |
mov cx,255 ; 256 symbols |
mov dx,0h ; 0 - position of first symbol |
xor dx, dx ; 0 - position of first symbol |
mov ax,1100h |
int 10h |
end if |
177,9 → 180,8 |
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 |
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 |
247,19 → 249,19 |
; 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: |
284,9 → 286,7 |
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 |
313,9 → 313,6 |
xor bx, bx |
int 0x15 |
|
push 0 |
pop es |
|
mov [es:0x9040], ebx |
mov [es:0x9050], ax |
mov [es:0x9052], cx |
326,8 → 323,6 |
|
; DISPLAY VESA INFORMATION |
|
push 0 |
pop es |
mov ax,0x4f00 |
mov di,0xa000 |
int 0x10 |
334,9 → 329,6 |
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 |
349,7 → 341,7 |
; 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 |
@@: |
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 |
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 |
532,9 → 532,9 |
_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 |
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 ? |
691,7 → 690,7 |
mov al, 32 ; BPP |
jb @f |
mov [es:0x9000], al |
mov dword [es:0x9018], 0xFFFFFFFF; 0x800000 |
or dword [es:0x9018], 0xFFFFFFFF; 0x800000 |
@@: |
mov [es:0x9008],bx |
mov [es:0x900A],cx |
710,13 → 709,12 |
inc bx |
cmp bx,0x17f |
mov si,prnotfnd |
jz sayerr |
jz invalid_video_mode |
|
probemore: |
push cx |
mov ax,0x4f01 |
mov cx,bx |
and cx,0xfff |
mov di,0xa000 |
int 0x10 |
pop cx |
762,7 → 760,12 |
mov si,bt32 |
jz bppl |
mov si,btns |
jmp sayerr |
invalid_video_mode: |
call print |
_setcursor (d80x25_top_num+2), 0 |
mov si, start_msg |
call print |
jmp cfgmanager.printcfg |
bppl: |
call print |
|
788,9 → 791,9 |
; force yes |
mov [es:0x901C], byte 1 |
|
; DMA WRITE |
; DMA ACCESS TO HD |
|
mov al, [preboot_dma_write] |
mov al, [preboot_dma] |
mov [es:0x901F],al |
|
; VRR_M USE |