diff options
-rw-r--r-- | Makefile.private | 17 | ||||
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | com32/lib/Makefile | 4 | ||||
-rw-r--r-- | com32/lib/sys/vesa/initvesa.c | 18 | ||||
-rw-r--r-- | keywords | 1 | ||||
-rw-r--r-- | keywords.inc | 69 | ||||
-rw-r--r-- | parseconfig.inc | 25 | ||||
-rw-r--r-- | version | 2 |
8 files changed, 92 insertions, 47 deletions
diff --git a/Makefile.private b/Makefile.private index 114d0860..ddbf75b0 100644 --- a/Makefile.private +++ b/Makefile.private @@ -35,9 +35,10 @@ burn: isolinux.iso cdrecord -v blank=fast isolinux.iso official: - $(MAKE) spotless - $(MAKE) all DATE=`date +'%Y-%m-%d'` - $(MAKE) dist + $(MAKE) spotless CC='$(CC) -m32' + $(MAKE) depend CC='$(CC) -m32' + $(MAKE) all CC='$(CC) -m32' + $(MAKE) dist CC='$(CC) -m32' release: test -d release @@ -53,9 +54,8 @@ release: < release/syslinux-$(VERSION)/syslinux.spec.in \ > release/syslinux-$(VERSION)/syslinux.spec rm -f release/syslinux-$(VERSION)/syslinux.spec.in - $(MAKE) -C release/syslinux-$(VERSION) spotless - $(MAKE) -C release/syslinux-$(VERSION) depend - $(MAKE) -C release/syslinux-$(VERSION) official + $(MAKE) -C release/syslinux-$(VERSION) official DATE=`date +%Y-%m-%d` + cd release/syslinux-$(VERSION) && rm -rf $(PRIVATE) cd release && tar cvvf - syslinux-$(VERSION) | \ gzip -9 > syslinux-$(VERSION).tar.gz @@ -84,10 +84,7 @@ prerel: < $(PRERELDIR)/$(PREREL)/syslinux.spec.in \ > $(PRERELDIR)/$(PREREL)/syslinux.spec rm -f $(PRERELDIR)/$(PREREL)/syslinux.spec.in - $(MAKE) -C $(PRERELDIR)/$(PREREL) spotless - $(MAKE) -C $(PRERELDIR)/$(PREREL) depend - $(MAKE) -C $(PRERELDIR)/$(PREREL) all DATE=`printf '%s-pre%d ' $(VERSION) $(PRERELNO) | dd bs=10 count=1 2>/dev/null` - $(MAKE) -C $(PRERELDIR)/$(PREREL) dist + $(MAKE) -C $(PRERELDIR)/$(PREREL) official DATE=`printf '%s-pre%d ' $(VERSION) $(PRERELNO) | dd bs=10 count=1 2>/dev/null` cd $(PRERELDIR)/$(PREREL) && rm -rf $(PRIVATE) cd $(PRERELDIR) && tar cvvf - $(PREREL) | \ gzip -9 > $(PREREL).tar.gz @@ -2,6 +2,9 @@ Starting with 1.47, changes marked with SYSLINUX/PXELINUX/ISOLINUX apply to that specific program only; other changes apply to all of them. +Changes in 3.32: + * MEMDISK: New "safeint" mode. + Changes in 3.31: * The simple menu system (menu.c32 and vesamenu.c32) now support loading more than one configuration file at a time, diff --git a/com32/lib/Makefile b/com32/lib/Makefile index a6355c9f..1bbfadeb 100644 --- a/com32/lib/Makefile +++ b/com32/lib/Makefile @@ -78,7 +78,9 @@ libcom32.a : $(LIBOBJS) $(RANLIB) $@ tidy: - rm -f *.o .*.d */*.o */.*.d sys/vesa/alphatbl.c + rm -f sys/vesa/alphatbl.c + find . -name \*.o -print | xargs -r rm -f + find . -name .\*.d -print | xargs -r rm -f clean: tidy rm -f *.a diff --git a/com32/lib/sys/vesa/initvesa.c b/com32/lib/sys/vesa/initvesa.c index 35084449..febb5804 100644 --- a/com32/lib/sys/vesa/initvesa.c +++ b/com32/lib/sys/vesa/initvesa.c @@ -105,6 +105,7 @@ static int vesacon_set_mode(void) debug("Hello, World!\r\n"); memset(&rm, 0, sizeof rm); + memset(gi, 0, sizeof *gi); gi->signature = VBE2_MAGIC; /* Get VBE2 extended data */ rm.eax.w[0] = 0x4F00; /* Get SVGA general information */ @@ -116,9 +117,13 @@ static int vesacon_set_mode(void) return 1; /* Function call failed */ if ( gi->signature != VESA_MAGIC ) return 2; /* No magic */ +#if 1 + /* Linear frame buffer is a VBE 2.0 feature. In theory this + test is redundant given that we check the bitmasks. */ if ( gi->version < 0x0200 ) { return 3; /* VESA 2.0 not supported */ } +#endif /* Copy general info */ memcpy(&__vesa_info.gi, gi, sizeof *gi); @@ -131,6 +136,7 @@ static int vesacon_set_mode(void) while ((mode = *mode_ptr++) != 0xFFFF) { debug("Found mode: 0x%04x\r\n", mode); + memset(mi, 0, sizeof *mi); rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */ rm.ecx.w[0] = mode; rm.edi.w[0] = OFFS(mi); @@ -145,8 +151,16 @@ static int vesacon_set_mode(void) mi->mode_attr, mi->h_res, mi->v_res, mi->bpp, mi->memory_layout, mi->rpos, mi->gpos, mi->bpos); - /* Must be an LFB color graphics mode supported by the hardware */ - if ( (mi->mode_attr & 0x0099) != 0x0099 ) + /* Must be an LFB color graphics mode supported by the hardware. + + The bits tested are: + 7 - linear frame buffer available + 4 - graphics mode + 3 - color mode + 1 - mode information available (mandatory in VBE 1.2+) + 0 - mode supported by hardware + */ + if ( (mi->mode_attr & 0x009b) != 0x009b ) continue; /* Must be 640x480, 32 bpp */ @@ -1,4 +1,5 @@ menu +text append default display diff --git a/keywords.inc b/keywords.inc index cffe6a75..811d5bd8 100644 --- a/keywords.inc +++ b/keywords.inc @@ -1,6 +1,6 @@ ;; ----------------------------------------------------------------------- ;; -;; Copyright 1994-2002 H. Peter Anvin - All Rights Reserved +;; Copyright 1994-2006 H. Peter Anvin - All Rights Reserved ;; ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -42,42 +42,45 @@ keywd_size equ 8 ; Bytes per keyword align 4, db 0 +%define FKeyN(n) (FKeyName+(((n)-1) << FILENAME_MAX_LG2)) + keywd_table: - keyword menu, pc_comment - keyword append, pc_append - keyword default, pc_default - keyword display, pc_filecmd, get_msg_file - keyword font, pc_filecmd, loadfont - keyword implicit, pc_setint16, AllowImplicit - keyword kbdmap, pc_filecmd, loadkeys - keyword kernel, pc_kernel - keyword label, pc_label - keyword prompt, pc_setint16, ForcePrompt - keyword say, pc_say - keyword serial, pc_serial - keyword console, pc_setint16, DisplayCon - keyword timeout, pc_timeout, KbdTimeout - keyword totaltimeout, pc_timeout, TotalTimeout - keyword ontimeout, pc_ontimeout - keyword onerror, pc_onerror - keyword allowoptions, pc_setint16, AllowOptions - keyword noescape, pc_setint16, NoEscape - keyword f1, pc_fkey, FKeyName+(0<<FILENAME_MAX_LG2) - keyword f2, pc_fkey, FKeyName+(1<<FILENAME_MAX_LG2) - keyword f3, pc_fkey, FKeyName+(2<<FILENAME_MAX_LG2) - keyword f4, pc_fkey, FKeyName+(3<<FILENAME_MAX_LG2) - keyword f5, pc_fkey, FKeyName+(4<<FILENAME_MAX_LG2) - keyword f6, pc_fkey, FKeyName+(5<<FILENAME_MAX_LG2) - keyword f7, pc_fkey, FKeyName+(6<<FILENAME_MAX_LG2) - keyword f8, pc_fkey, FKeyName+(7<<FILENAME_MAX_LG2) - keyword f9, pc_fkey, FKeyName+(8<<FILENAME_MAX_LG2) - keyword f10, pc_fkey, FKeyName+(9<<FILENAME_MAX_LG2) - keyword f0, pc_fkey, FKeyName+(9<<FILENAME_MAX_LG2) + keyword menu, pc_comment + keyword text, pc_text + keyword append, pc_append + keyword default, pc_default + keyword display, pc_filecmd, get_msg_file + keyword font, pc_filecmd, loadfont + keyword implicit, pc_setint16, AllowImplicit + keyword kbdmap, pc_filecmd, loadkeys + keyword kernel, pc_kernel + keyword label, pc_label + keyword prompt, pc_setint16, ForcePrompt + keyword say, pc_say + keyword serial, pc_serial + keyword console, pc_setint16, DisplayCon + keyword timeout, pc_timeout, KbdTimeout + keyword totaltimeout, pc_timeout, TotalTimeout + keyword ontimeout, pc_ontimeout + keyword onerror, pc_onerror + keyword allowoptions, pc_setint16, AllowOptions + keyword noescape, pc_setint16, NoEscape + keyword f1, pc_fkey, FKeyN(1) + keyword f2, pc_fkey, FKeyN(2) + keyword f3, pc_fkey, FKeyN(3) + keyword f4, pc_fkey, FKeyN(4) + keyword f5, pc_fkey, FKeyN(5) + keyword f6, pc_fkey, FKeyN(6) + keyword f7, pc_fkey, FKeyN(7) + keyword f8, pc_fkey, FKeyN(8) + keyword f9, pc_fkey, FKeyN(9) + keyword f10, pc_fkey, FKeyN(10) + keyword f0, pc_fkey, FKeyN(10) %if IS_PXELINUX - keyword ipappend, pc_ipappend + keyword ipappend, pc_ipappend %endif %if IS_PXELINUX || IS_ISOLINUX - keyword localboot, pc_localboot + keyword localboot, pc_localboot %endif keywd_count equ ($-keywd_table)/keywd_size diff --git a/parseconfig.inc b/parseconfig.inc index aef31613..de64a18f 100644 --- a/parseconfig.inc +++ b/parseconfig.inc @@ -306,6 +306,31 @@ pc_say: call pc_getline ; "say" command jmp crlf ; tailcall ; +; "text" command; ignore everything until we get an "endtext" line +; +pc_text: call pc_getline ; Ignore rest of line +.loop: + call pc_getline +.skipspace: + lodsb + and al,al + jz .loop + cmp al,' ' + jbe .skipspace + + dec si + lodsd + and eax,0xfdfdfdfd + cmp eax,'ENDT' + jne .loop + lodsd + and eax,0x00fdfdfd + cmp eax,'EXT' + jne .loop + ; If we get here we hit ENDTEXT + ret + +; ; Comment line ; pc_comment: ; Fall into pc_getline @@ -1 +1 @@ -3.31 +3.32 |