bcontrol 0.1.6

Public domain (upstream dedication)


--- Joystick.h ---
/*  Joystick.h - Autonomous joystick functions for the CoCo.
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- Joystick_private.h ---
/*  Joystick_private.h
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- Keyboard.c ---
/*  keyin.c - Autonomous keyboard functions for the CoCo.
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain, except the parts that come from Color Basic.
*/

--- Keyboard.h ---
/*  Keyboard.h - Autonomous keyboard functions for the CoCo.
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- README.md ---
BControl
========

By Pierre Sarrazin <http://sarrazip.com/>.

This library is in the public domain, except the parts of Keyboard.c
that come from Color Basic.

This library offers functions similar to Color Basic's INKEY$,
JOYSTK and BUTTON. It does not assume the presence of the Color
Basic interpreter.


# Usage

To use the Keyboard object, instante an instance, then call
`Keyboard_init()` on it. Then call `Keyboard_poll()` the same way
one would call INKEY$ in a Basic program. Call `Keyboard_shutdown()`
when finished with the Keyboard object.

To read the joystick axis values and button states on a CoCo or
Dragon, call `Joystick_getAxisValues()` and `Joystick_getButtonStates()`.
No initialization step is needed.

However, to help the portability to OS-9 of a program that uses
the joystick, `Joystick_getAxisValuesAndButtonState()` should be used
instead of the other functions of Joystick.h.

See Keyboard.h and Joystick.h for details.


# Dragon support

To compile for the Dragon, pass TARGET=dragon to make.


# OS-9 support

To compile for OS-9, pass TARGET=OS9 to make.


# Version history

    0.1.0   2018-11-25      First public release.
    0.1.1   2019-06-03      Partial support for OS-9 added:
                            setScreenBuffer() not supported.
                            Removed the (non portable) startInCapsLock parameter
                            from `Keyboard_init()`.
    0.1.2   2019-09-21      Added missing OS9RawTerminal.h.
    0.1.3   2020-06-27      Added `Joystick_selectAnalogMuxInputs()` and
                            `Joystick_compareAxis()`, which allow custom, faster
                            axis polling (but is not usable under OS-9).
    0.1.4   2022-11-12      Fixed the Dragon executable extension in the makefile.
                            Added `Joystick_getAxisValuesAndButtonState()`, which
                            targets a single joystick and also works under OS-9.
                            Include "Joystick.h" to use it.
    0.1.5   2024-08-29      Joystick comparator read routine slightly optimized
                            with inline asm. (Not applicable to OS-9 version.)
                            Centralized some function prototypes.
                            Removed UTF-8 characters from Keyboard.c.
    0.1.6   2026-09-06      Added Joystick_getButtonStates2().
                            Optimized Joystick_selectAnalogMuxInputs().
                            Optimized Joystick_compareAxis().

--- bcontrol.c ---
/*  bcontrol.c - Test and demo program.
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- compareAxis.c ---
/*  compareAxis.c - Autonomous joystick functions for the CoCo.
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- disableSound.c ---
/*  disableSound.c
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- enableSound.c ---
/*  enableSound.c
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- getAxisValues.c ---
/*  getAxisValues.c
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.

    The current implementation is based on Color Basic's.
    Improvements are welcome.
*/

--- getAxisValuesAndButtonState.c ---
/*  getAxisValuesAndButtonState.c - Autonomous joystick functions for the CoCo.
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- getButtonStates.c ---
/*  getButtonStates.c
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- getButtonStates2.c ---
/*  getButtonStates2.c
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- readComparatorMultipleTries.c ---
/*  readComparatorMultipleTries.c - Autonomous joystick functions for the CoCo.
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/

--- selectAnalogMuxInputs.c ---
/*  selectAnalogMuxInputs.c
    By Pierre Sarrazin <http://sarrazip.com/>
    This file is in the public domain.
*/
