Hi Pat, your patches and/or MEMDISK have the problem that they do not DETECT which A20 setting styles work and which not!
- PS/2: port 92h -> or 2 to enable, and ~2 to disable A20 - 8042: command d1 / port 60 ... here, too, ONLY bit 1 should be messed with (or 2 / and ~2). It is important to do "wait until 8042 is ready" and "wait until A20 actually switched". 8042 is slow! - BIOS: your BIOS call may or may not function, depending on the BIOS. So you should try PS/2 first. If this does not work, try BIOS. Finally, try 8042. Then keep using only the "tested and working" access method. Some hardware has the A20 stuck to enabled, should not be a problem. Just display a warning. Sometimes BIOS CMOS setup has a menu entry to switch between PS/2 and 8042 style support. You could tell the user about that if you detect that only slow 8042 access works. Finally, MEMDISK hooks int 15.87? HIMEM does, too. But the HIMEM hook only helps programs which are loaded AFTER HIMEM. Interesting. So the MEMDISK hook more or less has to help HIMEM ;-). And I do think that this is a SYSLINUX problem, so CCing them. Both MEMDISK (part of SYSLINUX package) and FreeDOS XMS drivers should be careful and select a fast and working A20 switching method. Retrying 255 times is not that good. Better try only once and allow for some waiting until it switches. Even after initial checks, the driver should always WAIT until the 8042 (if used) is really ready and WAIT until the A20 state really changed. I read in RBIL 61 ports.txt that on some systems the A20 gate is gate enabled = PS/2 gate enabled "or" 8042 gate enabled, but this depends on your CMOS setup and on your hardware. Some setup values can mean "only use PS/2 gate setting" or "only use 8042 gate setting" or even "keep A20 stuck to enabled" or even more weird things. It might be an idea to check if the logical connection is an OR if you find both PS/2 and 8042 working: In that case you would want to DISABLE through 8042 and SWITCH through PS/2 later. If the connection is an AND... well, imagine yourself. If connection is AND and 8042 is on "disable A20", you can do anything with PS/2 without success. This is very UNLIKELY, but still. If the connection is OR and 8042 is left on "enable A20", you cannot turn A20 off through PS/2... does not really hurt (A20 stuck to enabled does not really hurt at all in most cases). But of course there is this stupid MS EXEPACK software which needs A20 off if you try to load a file without LOADFIX (which moves the load segment beyond the first 64k)... I think EXEPACK is the only software which ever needed a "disable-able" A20 :-(. Confusing topic maybe, but definitely needs to be handled with care, so better do more checks than less. Luckily most of the checking code does not have to stay in RAM after initialization. Eric. _______________________________________________ SYSLINUX mailing list Submissions to [EMAIL PROTECTED] Unsubscribe or set options at: http://www.zytor.com/mailman/listinfo/syslinux Please do not send private replies to mailing list traffic. ------------------------------------------------------- This SF.Net email is sponsored by: IBM Linux Tutorials Free Linux tutorial presented by Daniel Robbins, President and CEO of GenToo technologies. Learn everything from fundamentals to system administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click _______________________________________________ Freedos-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freedos-devel
