If you have linux in your grub4dos menu.lst, you often need two entries, one for normal mode and one for safe mode so that you can boot on 'difficult' hardware.
This solution allows you to just have one menu entry but you can hold down SHIFT when you hit Enter to use safe mode parameters.
For this you need the
bios utility on your drive (in this case in the root of the boot drive).You could also test for Ctrl or Alt and some other keys.
Note some lines are long and run over - use cut and paste!
title Run Linux\nPress SHIFT+ENTER for safe mode
/bios int=0x16 eax=0x00000200 > (md)0x300+1
cat --skip=12 --length=2 (md)0x300+1 | set /a n=0x > nul
set /a n=%n% & 0x03 > nul && if %n%>=1 echo SHIFT PRESSED!
#LShift=01,RShift=02,CTRL=04,ALT=08,SCROLL=10,NUM=20,CAPS=40,INS=80
#set /a n=%n% & 0x04 > nul && if %n%>=1 echo CTRL PRESSED!
set sf=
if %n%>=1 set sf=acpi=off irqpoll noapic noapm nodma nomce nolapic nosmp
kernel /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper %sf% splash
initrd /casper/initrd.img
Bios Int 16 ah=2 reference
here
NOTE: was...
/bios int=0x16 eax=0x00000200 > (md)0x300+1 && cat --skip=12 --length=2 (md)0x300+1 | set /a n=0x > nul
the 2nd half of the line is only executed if the BIOS returns non-zero. So && should not be used in this case.