diff options
Diffstat (limited to 'sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff')
-rw-r--r-- | sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff | 861 |
1 files changed, 0 insertions, 861 deletions
diff --git a/sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff b/sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff deleted file mode 100644 index e85d11ee5203..000000000000 --- a/sys-apps/lilo/files/21.7.5/lilo-21.7.4-gfx.diff +++ /dev/null @@ -1,861 +0,0 @@ -diff -uNr lilo-21.7.4.patched1/Makefile lilo-21.7.4.patched2/Makefile ---- lilo-21.7.4.patched1/Makefile Mon Apr 30 01:57:25 2001 -+++ lilo-21.7.4.patched2/Makefile Mon Apr 30 02:14:31 2001 -@@ -132,15 +132,15 @@ - first.s: first.S read.S lilo.h version.h lilo mylilo.h - $(CPP) $(PCONFIG) $(AFLAGS) `./lilo -X` first.S -o first.s - --second.s: second.S read.S lilo.h version.h lilo mylilo.h -+second.s: second.S gfxlogo.S read.S lilo.h version.h lilo mylilo.h - $(CPP) $(PCONFIG) $(AFLAGS) `./lilo -X` second.S -o second.s - --third.s: second.S read.S lilo.h version.h lilo mylilo.h \ -+third.s: second.S gfxlogo.S read.S lilo.h version.h lilo mylilo.h \ - graph.S menu.S strlen.S crt.S - $(CPP) $(PCONFIG) $(AFLAGS) `./lilo -X` \ - -DMENU second.S -o third.s - --temp2.s: second.S read.S lilo.h version.h \ -+temp2.s: second.S gfxlogo.S read.S lilo.h version.h \ - graph.S menu.S strlen.S crt.S - $(CPP) $(PCONFIG) $(LILOX) -DMENU second.S -o temp2.s - -diff -uNr lilo-21.7.4.patched1/bsect.c lilo-21.7.4.patched2/bsect.c ---- lilo-21.7.4.patched1/bsect.c Thu Feb 22 23:34:04 2001 -+++ lilo-21.7.4.patched2/bsect.c Mon Apr 30 02:14:31 2001 -@@ -148,8 +148,9 @@ - if (st.st_size > MAX_MESSAGE) - die("%s is too big (> %d bytes)",message,MAX_MESSAGE); - map_begin_section(); -- map_add(&geo,0,((bsect.par_1.msg_len = st.st_size)+SECTOR_SIZE-1)/ -- SECTOR_SIZE); -+ map_add(&geo,0,(st.st_size+SECTOR_SIZE-1)/SECTOR_SIZE); -+ /* allow pictures to be > 64k; text messages shoud be < 64k */ -+ bsect.par_1.msg_len = st.st_size > 0xffff ? 0xffff : st.st_size; - sectors = map_end_section(&bsect.par_1.msg,0); - if (verbose > 1) - printf("Message: %d sector%s.\n",sectors,sectors == 1 ? "" : "s"); -@@ -296,7 +297,7 @@ - { - struct stat st; - char *here,*root,*ram_disk,*vga,*password; -- char *literal,*append,*fback; -+ char *literal,*append,*fback, *image; - char fallback_buf[SECTOR_SIZE]; - - *descr->password = 0; -@@ -333,7 +334,8 @@ - if ((vga = cfg_get_strg(cf_kernel,"vga")) || (vga = cfg_get_strg(cf_options, - "vga"))) { - #ifndef NORMAL_VGA -- die("VGA mode presetting is not supported by your kernel."); -+ fprintf(stderr,"Warning: VGA mode presetting is not supported by your kernel, skipping the 'vga=' option."); /* -ecki */ -+ /*die("VGA mode presetting is not supported by your kernel.");*/ - #else - descr->flags |= FLAG_VGA; - if (!strcasecmp(vga,"normal")) descr->vga_mode = NORMAL_VGA; -@@ -356,6 +358,11 @@ - } - if (cfg_get_flag(cf_all,"single-key") || - cfg_get_flag(cf_options,"single-key")) descr->flags |= FLAG_SINGLE; -+ if ((image = cfg_get_strg(cf_top, "image"))) { -+ strcat(options, "BOOT_FILE="); -+ strcat(options, image); -+ strcat(options, " "); -+ } - if ((append = cfg_get_strg(cf_kernel,"append")) || (append = - cfg_get_strg(cf_options,"append"))) strcat(options,append); - literal = cfg_get_strg(cf_kernel,"literal"); -diff -uNr lilo-21.7.4.patched1/gfxlogo.S lilo-21.7.4.patched2/gfxlogo.S ---- lilo-21.7.4.patched1/gfxlogo.S Thu Jan 1 01:00:00 1970 -+++ lilo-21.7.4.patched2/gfxlogo.S Mon Apr 30 02:14:31 2001 -@@ -0,0 +1,481 @@ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+; gfx stuff -+; -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ -+; != 0 -> everything is fine -+gfx_ok: .byte 0 -+ -+; the memory area we are working with -+gfx_mem: .long 0 ; linear address -+gfx_mem_max: .long 0 ; end address -+gfx_mem_free: .long 0 ; start of free area for malloc (after pcx image) -+ -+; interface to loadable gfx extension (seg:ofs values) -+gfx_bc_jt: .long 0 -+ -+gfx_bc_init: .long 0 -+gfx_bc_done: .long 0 -+gfx_bc_input: .long 0 -+gfx_bc_menu_init: .long 0 -+gfx_bc_infobox_init: .long 0 -+gfx_bc_infobox_done: .long 0 -+gfx_bc_progress_init: .long 0 -+gfx_bc_progress_done: .long 0 -+gfx_bc_progress_update: .long 0 -+gfx_bc_progress_limit: .long 0 -+gfx_bc_password_init: .long 0 -+gfx_bc_password_done: .long 0 -+ -+; system config data -+gfx_sysconfig: -+gfx_sc_vmode: .byte 0 -+gfx_sc_modes: .byte 0 -+ -+gfx_password_buf: .blkb 32 -+gfx_msg_wrong_image: .ascii "Could not find kernel image: " -+ .byte 0 -+gfx_msg_wrong_password: .ascii "Sorry, incorrect password." -+ .byte 0 -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+; I really have no idea how to get as86 to do this properly -+ -+ macro farcall -+ .byte 0xff -+ .byte 0x1e -+ .word ?1 -+ mend -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_get_sysconfig: -+ xor ax,ax -+ ret -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_set_sysconfig: -+ ret -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+; Initialize graphics code. Load and display graphics data. -+; -+; edi file length -+; -+; return: [gfx_ok] = 0/1 -+; -+gfx_init: -+ push es -+ -+ cld -+ -+ mov byte gfx_ok,#0 -+ -+ ; define our memory area -+ ; gfx_mem _must_ be 16-byte aligned -+ mov dword gfx_mem,#0x10000 -+ add edi,gfx_mem -+ mov gfx_mem_free,edi -+ mov dword gfx_mem_max,#0x80000 -+ -+ sub edi,gfx_mem_max -+ neg edi -+ cmp edi,#0x1000 ; we need some minimum space -+ jc near gfx_init_80 -+ -+ ; align 4 -+ mov eax,gfx_mem_free -+ add eax,#3 -+ and eax,#~3 -+ mov gfx_mem_free,eax -+ -+ push dword gfx_mem -+ call gfx_l2so -+ pop bx -+ pop es -+ -+ seg es -+ cmp dword (bx),#0x0b2d97f00 ; header.magic_id -+ jnz near gfx_init_80 -+ seg es -+ cmp byte (bx+4),#1 ; header.version -+ jnz near gfx_init_80 -+ -+ seg es -+ mov eax,(bx+8) -+ or eax,eax -+ jz near gfx_init_80 -+ add eax,gfx_mem -+ test al,#0xf -+ jnz near gfx_init_80 -+ shr eax,4 -+ mov gfx_bc_jt+2,ax -+ -+ -+ ; setup jump table -+ les bx,gfx_bc_jt -+ -+ seg es -+ mov ax,(bx) -+ mov gfx_bc_init,ax -+ mov gfx_bc_init+2,es -+ -+ seg es -+ mov ax,(bx+2) -+ mov gfx_bc_done,ax -+ mov gfx_bc_done+2,es -+ -+ seg es -+ mov ax,(bx+4) -+ mov gfx_bc_input,ax -+ mov gfx_bc_input+2,es -+ -+ seg es -+ mov ax,(bx+6) -+ mov gfx_bc_menu_init,ax -+ mov gfx_bc_menu_init+2,es -+ -+ seg es -+ mov ax,(bx+8) -+ mov gfx_bc_infobox_init,ax -+ mov gfx_bc_infobox_init+2,es -+ -+ seg es -+ mov ax,(bx+10) -+ mov gfx_bc_infobox_done,ax -+ mov gfx_bc_infobox_done+2,es -+ -+ seg es -+ mov ax,(bx+12) -+ mov gfx_bc_progress_init,ax -+ mov gfx_bc_progress_init+2,es -+ -+ seg es -+ mov ax,(bx+14) -+ mov gfx_bc_progress_done,ax -+ mov gfx_bc_progress_done+2,es -+ -+ seg es -+ mov ax,(bx+16) -+ mov gfx_bc_progress_update,ax -+ mov gfx_bc_progress_update+2,es -+ -+ seg es -+ mov ax,(bx+18) -+ mov gfx_bc_progress_limit,ax -+ mov gfx_bc_progress_limit+2,es -+ -+ seg es -+ mov ax,(bx+20) -+ mov gfx_bc_password_init,ax -+ mov gfx_bc_password_init+2,es -+ -+ seg es -+ mov ax,(bx+22) -+ mov gfx_bc_password_done,ax -+ mov gfx_bc_password_done+2,es -+ -+ mov eax,gfx_mem -+ mov ebx,gfx_mem_free -+ mov ecx,gfx_mem_max -+ mov dx,cs -+ mov si,#gfx_sysconfig -+ -+ ; eax memory start -+ ; ebx free memory start -+ ; ecx memory end -+ ; dx boot loader code segment -+ ; si gfx_sysconfig offset -+ -+ farcall(gfx_bc_init) -+ -+ jc gfx_init_80 -+ -+ mov byte gfx_ok,#1 -+ -+ jmp gfx_init_90 -+ -+gfx_init_80: -+ mov byte gfx_ok,#0 -+gfx_init_90: -+ pop es -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+; Back to text mode. -+; -+; return: [gfx_ok] = 0 -+; -+gfx_done: -+ cmp byte gfx_ok,#0 -+ jz gfx_done_90 -+ farcall(gfx_bc_done) -+ mov byte gfx_ok,#0 -+ call gfx_set_sysconfig -+gfx_done_90: -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_input: -+ cmp byte gfx_ok,#0 -+ jz gfx_input_90 -+ call gfx_get_sysconfig -+ -+ mov ax,#0xffff -+ seg fs -+ xchg ax,DSC_OFF-10+SSDIFF -+ -+ ; map 0xffff -> 0 -+ add ax,#1 -+ cmc -+ sbb ax,#0 -+ -+gfx_input_20: -+ mov di,#cmdline -+ mov cx,#CL_LENGTH -+ -+ ; di buffer ( 0 --> no buffer ) -+ ; cx buffer size -+ ; ax timeout value (0 --> no timeout) -+ -+ farcall(gfx_bc_input) -+ -+ pushf -+ call gfx_set_sysconfig -+ popf -+ jnc gfx_input_50 -+ mov ax,#1 -+gfx_input_50: -+ cmp ax,#1 -+ jz gfx_input_80 -+ -+ call find_boot_image -+ jnc gfx_input_90 -+ -+ mov si,#gfx_msg_wrong_image -+ mov di,#cmdline -+ -+ mov al,#0 -+ call gfx_infobox -+ -+ xor ax,ax -+ jmp gfx_input_20 -+gfx_input_80: -+ push ax -+ call gfx_done -+ pop ax -+gfx_input_90: -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_setup_menu: -+ cmp byte gfx_ok,#0 -+ jz gfx_setup_menu_90 -+ -+ mov si,#DESCR+2 -+ mov di,si -+ xor ax,ax -+ mov cx,#IMAGES -+gfx_setup_menu_20: -+ cmp byte (si),#0 -+ jz gfx_setup_menu_30 -+ inc ax -+ add si,#DESCR_SIZE -+ loop gfx_setup_menu_20 -+gfx_setup_menu_30: -+ mov si,di -+ mov dx,#DESCR_SIZE -+ -+ ; al menu entries -+ ; dx menu entry size -+ ; di menu entry list -+ ; si default menu entry -+ -+ farcall(gfx_bc_menu_init) -+gfx_setup_menu_90: -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_infobox: -+ pushad -+ cmp byte gfx_ok,#0 -+ jz gfx_infobox_90 -+ farcall(gfx_bc_infobox_init) -+ xor di,di -+ xor ax,ax -+ farcall(gfx_bc_input) -+ farcall(gfx_bc_infobox_done) -+gfx_infobox_90: -+ popad -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_progress_init: -+ pushad -+ cmp byte gfx_ok,#0 -+ jz gfx_progress_init_90 -+ movzx eax,ax -+ farcall(gfx_bc_progress_init) -+gfx_progress_init_90: -+ popad -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_progress_done: -+ pushad -+ cmp byte gfx_ok,#0 -+ jz gfx_progress_done_90 -+ farcall(gfx_bc_progress_done) -+gfx_progress_done_90: -+ popad -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_progress_update: -+ pushad -+ cmp byte gfx_ok,#0 -+ jz gfx_progress_update_90 -+ movzx eax,cx -+ farcall(gfx_bc_progress_update) -+gfx_progress_update_90: -+ popad -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_progress_limit: -+ pushad -+ cmp byte gfx_ok,#0 -+ jz gfx_progress_limit_90 -+ movzx eax,ax -+ farcall(gfx_bc_progress_limit) -+gfx_progress_limit_90: -+ popad -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+gfx_password: -+ pushad -+ cmp byte gfx_ok,#0 -+ stc -+ jz gfx_password_90 -+ farcall(gfx_bc_password_init) -+ mov di,#gfx_password_buf -+ mov cx,#32 -+ xor ax,ax -+ farcall(gfx_bc_input) -+ mov si,#gfx_password_buf -+ farcall(gfx_bc_password_done) -+ jnc gfx_password_90 -+ mov si,#gfx_msg_wrong_password -+ xor di,di -+ mov al,#0 -+ farcall(gfx_bc_infobox_init) -+ xor di,di -+ xor ax,ax -+ farcall(gfx_bc_input) -+ farcall(gfx_bc_infobox_done) -+ stc -+gfx_password_90: -+ popad -+ ret -+ -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+; Convert 32bit linear address to seg:ofs. -+; -+; dword [esp + 2]: linear address -+; -+; return: -+; dword [esp + 2]: seg:ofs -+; -+; Notes: -+; - changes no regs -+; -+gfx_l2so: -+ push eax -+ mov eax,(esp + 6) -+ shr eax,4 -+ mov (esp + 8),ax -+ and word (esp + 6),#0xf -+ pop eax -+ ret -+ -+; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+; -+; locate the boot image -+; -+; return: -+; bx boot image index -+; CF error (image not found) -+; -+find_boot_image: -+ mov dx,#DESCR+2 -+ mov cx,#IMAGES -+ -+ xor bx,bx -+ -+find_boot_image_10: -+ mov si,dx -+ mov di,#cmdline -+find_boot_image_20: -+ mov al,(si) -+ or al,al -+ jz find_boot_image_60 -+ cmp al,(di) -+ jnz find_boot_image_30 -+ inc si -+ inc di -+ jmp find_boot_image_20 -+find_boot_image_30: -+ inc bx -+ add dx,#DESCR_SIZE -+ cmp bx,cx -+ jb find_boot_image_10 -+ ; not found, strip options for fancy error message -+ -+ mov si,#cmdline -+ mov cx,#MAX_IMAGE_NAME+1 -+find_boot_image_40: -+ cmp byte (si),#0x20+1 -+ inc si -+ jb find_boot_image_50 -+ loop find_boot_image_40 -+find_boot_image_50: -+ mov byte (si-1),#0 -+ jmp find_boot_image_80 -+find_boot_image_60: -+ mov al,(di) -+ cmp al,#0x20 -+ ja find_boot_image_30 -+ imul bx,bx,#DESCR_SIZE -+ add bx,#DESCR+2 -+ jmp find_boot_image_90 -+find_boot_image_80: -+ stc -+find_boot_image_90: -+ ret -+ -+ -diff -uNr lilo-21.7.4.patched1/lilo.h lilo-21.7.4.patched2/lilo.h ---- lilo-21.7.4.patched1/lilo.h Mon Apr 30 02:12:11 2001 -+++ lilo-21.7.4.patched2/lilo.h Mon Apr 30 02:14:31 2001 -@@ -59,7 +59,7 @@ - #define MAX_IMAGE_NAME 15 /* maximum name length (w/o terminating NUL) */ - #define MAX_PW 15 /* maximum password length */ - --#define MAX_SECONDARY 12 -+#define MAX_SECONDARY 14 - - #define SECTOR_SIZE 512 /* disk sector size */ - #ifndef BLOCK_SIZE /* may also come from linux/fs.h */ -@@ -157,7 +157,7 @@ - #define DC_MAGIC 0xf4f2 /* magic number of default cmd. line sector */ - #define DC_MGOFF 0x6b6d /* magic number for disabled line */ - --#define MAX_MESSAGE 65535 /* maximum message length */ -+#define MAX_MESSAGE 8*64*1024-1 /* maximum message length (512k) */ - - #define NEW_HDR_SIG "HdrS" /* setup header signature */ - #define NEW_HDR_VERSION 0x200 /* header version number */ -diff -uNr lilo-21.7.4.patched1/second.S lilo-21.7.4.patched2/second.S ---- lilo-21.7.4.patched1/second.S Mon Apr 30 01:55:01 2001 -+++ lilo-21.7.4.patched2/second.S Mon Apr 30 02:20:43 2001 -@@ -439,6 +439,7 @@ - - dokay: mov bx,#ospc ! display 'O ' - call say -+! call flamme ! display flame hack - mov ospc,#0 ! disable the message - mov word ptr vgaovr,#VGA_NOCOVR ! disable VGA override - mov word ptr memlim,#0 ! no memory limit -@@ -479,7 +480,8 @@ - seg es - cmp byte ptr (si),#0 ! empty ? - je iloop ! yes -> enter interactive mode -- jmp niloop ! enter non-interactive mode -+niloop0: -+ br niloop ! enter non-interactive mode - - ! No external parameters after timeout -> boot first image - -@@ -487,7 +489,7 @@ - pop es - mov si,#DFLCMD+2 ! default command line ? - cmp byte ptr (si),#0 -- jne niloop ! yes -> use it -+ jne niloop0 ! yes -> use it - mov ax,nodfl ! no idea how to tell as86 to do jmp (addr) :-( - jmp ax ! fall through - -@@ -495,12 +497,16 @@ - ! Command input processor - - iloop: --#ifdef MENU -- call menu_setup --#endif -+ cmp byte gfx_ok,#0 -+ jnz iloop_gfx -+ -+ ; load message before doing anything else -+ ; the graphics/text stuff is mixed in a rather messy way... -+ - seg fs ! message disabled ? - cmp MSG_OFF+SSDIFF,#0 -- je nomsg ! yes -> skip this -+ ; _must_ be 'jz'! -+ jz iloop_20 ! yes -> skip this - call crlf - seg fs ! load the message file - mov cx,MSG_OFF+SSDIFF+2 -@@ -512,6 +518,16 @@ - call sread - call loadfile - -+ ; es:bx points to file end -+ movzx ebx,bx -+ xor edi,edi -+ mov di,es -+ shl edi,4 -+ add edi,ebx -+ sub edi,#SYSSEG * 16 -+ -+ ; edi -> message file size -+ - push #SYSSEG - pop ds - -@@ -519,7 +535,76 @@ - ! messages - seg fs - xchg bx,MSG_OFF+SSDIFF -- mov byte ptr (bx),#0 -+ -+ cmp dword ptr 0,#0x0b2d97f00 ; magic header -+ ; _must_ be 'jnz'! -+ jnz iloop_10 -+ -+ push cs -+ pop ds -+ -+ ; graphical message -+#if 0 -+; no alternative text message for now -+ mov dword showit,message_offset_relative_to_SYSSEG -+#endif -+ call gfx_init -+ push cs -+ pop es -+ cmp byte gfx_ok,#0 -+ jz iloop -+ call gfx_setup_menu -+iloop_gfx: -+ push cs -+ pop es -+ call gfx_input -+ cmp ax,#1 -+ jz iloop ; text mode -+ jmp near boot -+ -+ ; normal text message -+iloop_10: -+ ; keep the zero flag! -+ mov byte ptr (bx),#0 -+ push cs -+ pop ds -+ -+iloop_20: -+#ifdef MENU -+ pushf -+ call menu_setup -+ popf -+#endif -+ jnz totxt -+ -+ mov ax,showit -+ mov dx,showit+2 -+ mov bx,ax -+ or bx,dx -+ jz iloop_40 -+ push ds -+ shl dx,12 -+ mov bx,ax -+ and bx,#0xf -+ shr ax,4 -+ add ax,dx -+ add ax,#SYSSEG -+ mov ds,ax -+ call say -+ pop ds -+ xor ax,ax -+ mov showit,ax -+ mov showit+2,ax -+iloop_40: -+ -+ jmp nomsg -+ -+showit: -+ .long 0 -+ -+totxt: -+ push #SYSSEG -+ pop ds - xor bx,bx ! display the message - call say - -@@ -554,7 +639,6 @@ - inc si - jmp gotinp ! go on - --tolist: br list ! ... - - kbinp: mov cx,#brto ! get a key - call getkey -@@ -575,18 +659,29 @@ - je tolist ! yes -> list images - or al,al ! NUL ? - je nul ! yes -> go on -- cmp al,#13 ! CR ? -- je cr ! yes -> go on - cmp al,#8 ! BS ? - je todelch ! yes -> erase one character - cmp al,#127 ! DEL ? - je todelch ! yes -> erase one character - ja input ! non-printable -> ignore it -+ cmp al,#13 ! CR ? -+ je cr ! yes -> go on - cmp al,#21 ! ^U ? - je todell ! yes -> erase the line -- cmp al,#24 ! ^X ? -- je todell ! yes -> erase the line -- cmp al,#32 ! ignore non-printable characters except space -+! cmp al,#27 ! Esc? -+! jne nogrph ! No -> continue -+ -+! seg cs -+! cmp grphmode, #$FF ! Yes -> check if graphics mode -+! jne nogrph ! -+! br togrph ! If graphics mode, go back to screen -+ -+nogrph: cmp al,#24 ! ^X? -+ jne suitek ! yes -> flame mode -+! call flamme -+ br toinput -+ -+suitek: cmp al,#32 ! ignore non-printable chars except space - jb input - ja noblnk ! no space -> go on - cmp (bx-1),al ! second space in a row ? -@@ -626,6 +721,7 @@ - - todelch:br delch ! ... - todell: br delline ! ... -+tolist: br list ! ... - - ! End of input, process the command line - -@@ -869,11 +965,19 @@ - jz dopw ! no -> get the password - cmp byte ptr (si),#0! are there any options ? - jne dopw ! yes -> password required --toboot: jmp doboot ! ... -+toboot: jmp near doboot ! ... - dopw: push bx ! save the image descriptor - lea si,(bx+MAX_IMAGE_NAME+1) ! get a pointer to the password string - seg fs ! disable timeout - mov DSC_OFF-10+SSDIFF,#0xffff -+ cmp byte gfx_ok,#0 -+ jz dopw_nogfx -+ mov di,bx -+ call gfx_password -+ pop bx -+ jnc toboot -+ jmp near iloop -+dopw_nogfx: - mov bx,#msg_pw ! display a prompt - call say - pwagain:xor cl,cl ! CL counts characters after a mismatch -@@ -932,7 +1036,9 @@ - - ! Boot the image BX points to - --doboot: mov byte ptr prechr,#61 ! switch to equal sign -+doboot: -+ call gfx_done -+ mov byte ptr prechr,#61 ! switch to equal sign - push bx ! save image descr - mov bx,#msg_l ! say hi - call say -@@ -2188,7 +2294,9 @@ - je mldivl ! yes -> divide - cmp byte ptr (si),#32 - ;;; je mldivl ! yes -> divide -- jne s2lbad ! trouble -+; jne s2lbad ! trouble -+ je mldivl -+ br s2lbad - mldivl: shr dx,1 ! shr DX:AX,1 - rcr ax,1 - loop mldivl ! ten times -@@ -2205,6 +2313,8 @@ - pop si ! restore SI - ret ! done - -+ -+#include "gfxlogo.S" - - strtoul: /* string to unsigned long in DX:AX */ - xor ax,ax ---- lilo-21.7.5/gfxlogo.S Sun Sep 9 13:50:36 2001 -+++ lilo-21.7.5.new/gfxlogo.S Sun Sep 9 13:35:10 2001 -@@ -32,6 +32,7 @@ - gfx_sysconfig: - gfx_sc_vmode: .byte 0 - gfx_sc_modes: .byte 0 -+gfx_bootloader: .byte 0 - - gfx_password_buf: .blkb 32 - gfx_msg_wrong_image: .ascii "Could not find kernel image: " -@@ -102,8 +103,11 @@ - cmp dword (bx),#0x0b2d97f00 ; header.magic_id - jnz near gfx_init_80 - seg es -- cmp byte (bx+4),#1 ; header.version -- jnz near gfx_init_80 -+ mov al,(bx+4) ; header.version -+ cmp al,#1 -+ jb near gfx_init_80 -+ cmp al,#2 -+ ja near gfx_init_80 - - seg es - mov eax,(bx+8) ---- lilo-21.7.5/gfxlogo.S Mon Sep 10 17:41:24 2001 -+++ lilo-21.7.5.new/gfxlogo.S Mon Sep 10 17:35:07 2001 -@@ -76,6 +76,11 @@ - - mov byte gfx_ok,#0 - -+ ; no gfx if we use a serial line -+ seg fs -+ cmp byte DSC_OFF-6+SSDIFF,#0 -+ jnz near gfx_init_90 -+ - ; define our memory area - ; gfx_mem _must_ be 16-byte aligned - mov dword gfx_mem,#0x10000 |