From: scd@cs.brown.edu (Steven C. Dollins)
Subject: Re: PC keyboard interrupt (source repost)
Organization: Dept. of Computer Science, Brown University
	<SCD.93Jan21175136@nevar.cs.brown.edu>
	<SCD.93Jan25211223@nevar.cs.brown.edu>
Date: Wed, 27 Jan 1993 14:43:27 GMT

For those who missed my previous source code posting or those who do
not have ftp access and asked me to mail them the source without
giving me a functioning return email address (hi, Paul,) the new
uuencoded zip of the source code follows.

In article <SCD.93Jan25211223@nevar.cs.brown.edu> scd@cs.brown.edu (Steven C. Dollins) writes:

   Sorry, folks.  The keyboard interrupt I posted was zipped with our
   system's UNIX zip which requires pkunzip 1.93a or unzip 5.0 to open.
   You have my apologies if this caused you problems.

   I have put a new zip file, created with pkzip 1.1, on the NCSA ftp
   site, ftp.ncsa.uiuc.edu, in outgoing/sdollins/keyint.zip.  This is the
   80386 assembly source for the keyboard and timer interrupts C library
   used in xspace.zip (in the same directory) and in its successor, the
   networked version, nspace13.zip (available on wuarchive.wustl.edu in
   mirrors/msdos-games/Misc.)

   The interrupt requires a 386 because I used some bit manipulation
   opcodes in the keyboard interrupt ... and 'cause I don't feel that
   16-bit machines are worth supporting anymore.

					- Steven Dollins
Brown Computer Graphics Group		scd@cs.brown.edu
--
A girl and a boy bump into each other -- surely an accident.
A girl and a boy bump and her handkerchief drops -- surely another accident.
But when a girl gives a boy a dead squid -- *_that _had _to _mean _something*.
			   -- S. Morganstern, "The Silent Gondoliers"

begin 644 keyint.zip
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
M  H          0 @         $M%64E.5"Y!4TU02P$""P *    !@"N*S@:
M9P $0:\#  "3"@  "          ! "    #!!0  2T5924Y4+DA02P$""P *
M    !@"9*S@:N77L(34'  #6#@  "0         ! "    "6"0  2T591$5-
93RY#4$L%!@     #  , I0   /(0        
 
end