Path: utzoo!attcan!uunet!ccicpg!cci632!ritcsh!sic From: sic@ritcsh.UUCP (Eric A. Neulight) Newsgroups: comp.binaries.ibm.pc.d Subject: 256keys: Interesting to those of you who took it... Keywords: 256keys typeahead IBM PC kludge kludge kludge Message-ID: <4050@ritcsh.UUCP> Date: 1 Sep 88 04:54:44 GMT Distribution: na Organization: Computer Science House @ RIT, Rochester, NY Lines: 45 I am posting this in response to some feedback/problems that have been brought to my attention concerning my submission of "256keys", a PC 256 key type-ahead buffer program, to comp.binaries.ibm.pc. In the accompanying documentation I stated that it worked with most generic PCs. This of course was a brave, bold, and extremely stupid promise. Invariably some people have not been able make it work on their PC variant. Here are some possible reasons/hints/suggestions. IBM's PC BIOS keyboard interrupt routine assumes that the keyboard type-ahead buffer resides somewhere within segment 40h (BIOS' data segment). That is, within reach of segment 40h. Remember were talking about an (ack!) Intel processor, you know, ambiguous addressing, 4096 ways to describe the same location, tons of processor overhead spent just setting up segment addressibility (all kinds of wisdom there, huh). Within reach of segment 40h means that the absolute address for the 256keys 512 byte buffer can be as high as 64k-512+400h = 10200h. 1020:0000 = 1000:0200 = 0821:7FF0 = 005A:FC60 = 0040:FE00 ..... It appears that in many '386 machines, and I guess some other types, even though BIOS may be compatible and hardcode the buffer within segment 40h, DOS loads higher in memory, therefore loading 256keys even higher, past the 10200h cut-off. How do you get around it (aside from burning a patched BIOS ROM [don't think it hasn't crossed my mind])? I do not have access to a '386 machine so I can not try this idea, but I distributed the short and simple source code for 256keys. Try rewriting it as a dumb device driver, just maybe DOS will load it lower in memory. If you are already loading other device drivers in CONFIG.SYS you may have to do this anyway if the device drivers are large (since they are loaded first). If that does not work you can either write your own keyboard interrupt driver or you are SOL. I have thought of a few other kludgy ways to get a large type-ahead buffer, but they are too repulsive to repeat here. If 256keys runs and states that it can not locate within seg 40h, and you are sure that it is the first memory resident program being loaded, and you are not a great hacker, well, it didn't cost nuthin'. (sorry) ============================================================================== CLAIMER: Well -- I wrote it! Eric Alan Neulight "Nothing is Impossible -- Just Impractical." Electrical Engineering "INSANITY is just a state of mine." Computer Science House Rochester Institute of Technology BITNET: EAN4762@RITVAX UUCP: ...!rutgers!rochester!ritcv!ritcsh!sic ==============================================================================