Mail Archives: djgpp/2009/03/20/21:00:33
Hi,
On Mar 20, 2:32=A0pm, DJ Delorie <d DOT DOT DOT AT delorie DOT com> wrote:
> > AFAICT, there aren't many DOS .sys device drivers with source.
>
> Here, have another one. =A0It's only 21 years old but should still
> useful :-)
>
> I probably have a bunch more kicking around, too, although most of my
> utilities were TSRs, not device drivers.
I actually saw a tweaked version of this (from 1992, slightly updated
by David Kirschbaum, Robert M. Ryan) about a year ago. Obviously the
most surprising things about it were the age and the original
author! :-)
ftp://garbo.uwasa.fi/pc/keyboard/buf160_6.zip
; v1.6a, 2-29-92, Robert M. Ryan
; - Added CLI and STI in installation routine. (hgm)
;
; v1.6, 2-26-92, Robert M. Ryan
; - On conditional assembly of PRIVATESTACK, this program will create
it's
; own stack. This was implemented due to problems on some older PCs.
; - Refine checking of segment boundries, based upon recommendation by
; Harry McGavran (hgm AT moki DOT lanl DOT gov)
; - Added missing a LES before stuffing data into driver header. (also
hgm)
; - Eliminated unnecessary structures and generally cleaned up code.
; - Changed name to BUF160, rather than BUF160_4, BUF160_5, etc.
;
; v1.5 10-23-91 Robert M. Ryan
; - using PUSHA and SHL AX,4 on conditional assembly for 286
; - changed the default buffer status to have TRANSFER enabled, so
that
; keys pressed during initialization are preserved.
; - changed case of es and ds to be like the rest of the registers
; - added initialization of BX so Cmd_Init would work
; - slightly modified initialization message
;
; Rob Ryan, Brown University
; Robert_Ryan AT brown DOT edu or 70324 DOT 227 AT CompuServe DOT Com
;
; v1.4 09-26-88 Toad Hall Tweak
; - Donno WHY all the public mess. Leaving it, tho.
; - Donno why author commented out the buffer transfer code.
; I guess, since we're loading as a driver right at system startup,
; there shouldn't BE anything in the old keyboard buffer.
; Driver works fine with TRANSFER enabled (1), but donno what good
it
; does. Therefore leaving the default (and compiled driver) OFF
(0).
; - Changed case: constants UPPERCASE, procedures mixed Upper_Lower,
; variables remain lowercase. (Helps to keep my head straight.)
; - Added some comments.
; - Moved Force inline (since only called once)
; - Using string commands in Transfer_Buffer (lodsw, stosw)
; - Just below Transfer_Done, recoded to use AX when stuffing words
; into variables (faster than old code using CX).
- Raw text -