Notes about Prototype 3 of KEYB 2.0 ("TAURUS")
==============================================

This is the prototype 3 to KEYB 2.0 ("taurus") project.

Prototypes are functional snapshots of my current work that
do not contain all the functionality of the future 2.0 project.

They are made as pieces of code from other projects, mainly
FreeDOS xkeyb, that are being replaced step by step by newly
rewritten code, mainly in assembler.

A selection of layouts has been chosen to be packed with
it. You should always use the layout files that come with the
project, as compatibility with xkeyb KEY files is not guaranteed
at all. Specially, KEY files using commands (preceded by the !
sign) will no longer work as expected.

Some pieces of code are to be replaced, hence there might be a
very reduced number of features available to xkeyb that are no
longer available in this release. However, I believe it to be
reliable enough if you are not affected by these restrictions,
and want to use a smaller memory footprint keyboard driver as
featured as FD-xkeyb. This wasn't true for previous prototypes.

Finally, note that:
- I am not packing the utilities that came with xkeyb. I may create
similar utilities in the future. However, this isn't guaranteed. Feel
free to send me your versions, and I may consider them to be packed
with it
- It is not yet guaranteed to work on a PC/XT class machine (but it
will in future releases)


IMPLEMENTED COMMANDS IN THIS PROTOTYPE
--------------------------------------

0:    CHAIN (send to BIOS-KEYB)

100:  Disable KEYB

140:  int 5h  (Print Screen)
141:  int 19h (Ctrl+Alt+Del)
142:  int 1Bh (Break)

150:  flush cache
151:  warm reboot
153:  power off
154:  suspend

160:  NOP (absorve)
161:  set PAUSE bit
164:  togle INS

*200..234: COMBIs


SPECIFIC NOTES TO PROTOTYPE 1
-----------------------------

Prototype 1 externally resembles xkeyb, and is even compatible with
xkeyb's KEY files. However, the internal structure of the file has
changed a lot, and many pieces of Pascal code have been rewritten
into assembler. The changes resulted in 2Kb less of resident size.

The changes mainly affect the interrupts that are hooked by the driver,
KEYB 2.0 hooks int 15h to provide AH=4Fh function (NOTE: in the
future, int9 handling will be made to be optional, so KEYB 2.0 will
really resemble mkeyb). This also allows the program to work with
third party keyboard drivers that hook int9h and poll int15h/4Fh.

The source of the program is now in a single file, with no other files
required, OOP is no longer used to hook/unhook interrupts.

Int 9h handler is now almost entirely in assembler, and the APL dirty
trick can now be overcome (but it is not compatible with it).

DISABLED FEATURES (temporarily):
- Ctrl+Alt+F1/F2 to enable/disable the driver
- No longer AltGr=Ctrl+Alt. Corollary: reboot your PC with AltGr+DEL
- Int2Fh handler (multiplexer) is now reduced, and the only served
function is AD80h (installation check). It is not guaranteed to be
100% RBIL compatible in this version

Typical resident size:  6.4Kb

SPECIFIC NOTES TO PROTOTYPE 2
-----------------------------

Support for the reduced version (KBDRES var) is removed.

Support for XFunctions is removed (the API wasn't available anyway).

XStrings code is automatically disposed if you don't use XStrings. NOTE:
DON'T try to load a layout that needs XStrings after loading one that
doesn't.

Typical resident size:  4.5Kb


SPECIFIC NOTES TO PROTOTYPE 3
-----------------------------

The foundations for the module discardation system are settled. There's
an improvement in the module discardation, that reduces the typical
resident size in 1Kb.

Interrupt 9h management now comes in three modes: FULL (the handler
completely replaces BIOS), REDUCED (a basic handler simply ensures
that int15h is checked) and NONE (no int9h management at all). They are
controlled through commandline.

Due to the rudimentary discardation system, you have the following
constraints:
- if you use APM commands, you need at least REDUCED management
- if you use XStrings, you need FULL management

The [SHIFTS] section is optional (defaulted to typical values), but if
you need to remap SHIFTS, you need to use the FULL management mode

Ussage of PC437.KEY file is now made optional, although it is strongly
recommended under FULL management mode, and it is mandatory if you are
using COMBIs, as for the contrary, it WON'T WORK properly.

There is a number of features that were disabled or were not working
properly in previous prototypes, and that have been readed:
- XStrings now are working properly
- Ctrl+Alt+F1 and Ctrl+Alt+F2 are hardcoded to enable/disable KEYB
- DEL can be used now in the combination Ctrl+Alt+Del to reboot the PC
  (but can't be remaped within the KEY files)

Commands (which you identify as preceded by the ! sign) have been
remapped to new positions, so xkeyb KEY files that use these WILL NO
LONGER WORK as expected. A brief list of the forthcomming command list
has been implemented (see implemented commands above).

For XStrings: note that the use of \[] commands is NOT supported (nor
was in xkeyb, despite the documentation).

Overloading is no longer supported. To switch layout, unload and reload
the driver (it will be restored in prot. 5).

This version is packed jointly with a set of valid KEY files, suitable
for prototype 3, but NOT for xkeyb, courtesy of Henrique Peron.

To sum up, if you are a FD-xkeyb user, unless you are on the unlikely 
case in which you use the xkeyb XFunctions API (or remap the DEL key), you
will not notice much differences with it, except that the resident
size is half the size of FD-xkeyb.

Typical resident size:  3.5Kb
