Libraries

Libraries
What is a library and why are libraries important?


 * [|Library (Wikipedia)]
 * [|Code reuse (Wikipedia)]

Writing Libraries

 * Checking if a library is INSTALLed
 * Commenting library code
 * Distributing crunched libraries
 * Guide to writing libraries
 * Fixing a 'Bad library' error
 * Preventing a library from being run
 * Using DATA statements in libraries

Supplied Libraries

 * [|ARRAYLIB] - Array and matrix functions
 * [|ASMLIB] - Assembler extensions (CMOV and SSE)
 * [|ASMLIB2] - More assembler extensions (SSE2)
 * [|CALLBACK] - Use Windows API functions which require a callback routine
 * CLASSLIB - Support for Object Classes (includes examples of use)
 * [|COMLIB] - Accessing COM automation (ActiveX) controls
 * [|D3DLIB] - Direct3D8 graphics
 * [|D3DLIBA] - Direct3D8 graphics (with additional camera roll-angle parameter)
 * [|D3D9LIB] - Direct3D9 graphics
 * [|D3D9LIBA] - Direct3D9 graphics (with additional camera roll-angle parameter)
 * [|DATELIB] - Calendar functions
 * [|ELLIPSE] - Plotting angled ellipses
 * EVENTLIB - Synchronous dispatch mechanism for ON MOUSE, ON MOVE, ON SYS and ON TIME events
 * [|FNUSING] - Formatting and conversion
 * [|GDIPLIB] - Antialiased graphics
 * [|HQSOUND] - High Quality sound patch
 * [|MDILIB] - Multiple Document Interface
 * [|MULTIWIN] - Multiple output windows
 * [|NOWAIT] - Replacement functions that don't stall interrupts
 * [|SOCKLIB] - Socket (network) connections
 * [|SORTLIB] - Sorts data arrays
 * SORTSALIB - Sorts arrays of structures (beware of different calling syntax)
 * [|SPRITELIB] - Sprites
 * [|STRINGLIB] - String functions
 * [|SUBCLASS] - Intercept and process Windows messages
 * [|TIMERLIB] - Multiple single-shot or periodic timers which call a specified BASIC PROCedure
 * [|WINLIB] - Toolbars and status bars
 * [|WINLIB2] - Dialogue boxes
 * [|WINLIB2A] - Dialogue boxes with context-sensitive help
 * [|WINLIB3] - Trackbars and progress bars
 * [|WINLIB4] - Property sheets and wizards
 * [|WINLIB5] - Boxes and buttons
 * [|WINLIB5A] - Boxes and buttons with specified parent window
 * [|XMLLIB] - Parse XML files

Downloadable Libraries
ArrayIO provides routines to write entire arrays to a file and read them back again.
 * [|ArrayIO]** - Jon Ripley

The BB4WMAPM library provides an interface between the //BBC BASIC for Windows// programming language and the [|MAPM arbitrary precision mathematics library].
 * [|BB4WMAPM]** - Christos Stogiannopoulos

Used in conjunction with BOX2D221.DLL and (optionally) BOX2DDBG.BBC, which are contained in the ZIP file, provides access to the [|Box2D Physics Engine].
 * [|BOX2DLIB]** - Richard Russell

CardLib provides an interface to the Windows cards library used by all the card games supplied with Windows.
 * [|CardLib]** - Jon Ripley

The Date library provides functions for converting dates between a 5-byte centi-second count and real-world date and time values. It replicates the functionality of the RISC OS SWIs Territory_ConvertOrdinalsToTime and Territory_ConvertDateAndTime.
 * [|Date]** - J.G.Harston

Two libraries DrawLib and ShowDraw used to create and display Acorn Draw format files on Windows.
 * [|DrawLib]** - Chris Hall & Chris Dennis

Incorporate subroutines written in Forth in your BASIC program. Forth is much faster than BASIC, but easier to learn than assembly language.
 * [|FORTHLIB]** - Richard Russell

This library makes it very easy to display images or part of images in your window, using GDI+. It gives a very good quality scaling. This demo program [|gdip_image_demo.bbc] explains the use of and demonstrates the possibilities of the library.
 * [|gdip_image]** - Hans van der Hoeven

Will give the SHA-1 hash value for a specified file.
 * [|HASHLIB]** - Michael Hutton

Calculates the MD2, MD4, MD5, SHA or SHA-1 hash of a file or a block of data in memory.
 * [|HASHLIB2]** - Michael Hutton

As HASHLIB2 but additionally calculates the SHA-256, SHA-384 or SHA-512 hash.
 * [|HASHLIB3]** - Michael Hutton

Interfaces to the [|Huge Integer Math and Encryption] library.
 * [|HIMELIB]** - Richard Russell

LoadDLL provides a simple and fast interface for accessing functions provided by DLLs (Dynamic Link Libraries).
 * [|LoadDLL]** - Jon Ripley

Memory allocation library (using the Windows API). Provides functions for memory allocation, reallocation and freeing.
 * [|MAlloc]** - Jon Ripley

Memory allocation library (using BBC BASIC's heap). Provides functions for memory allocation, reallocation and freeing.
 * [|MAlloc]** - J.G.Harston

Supports accessing an ODBC-compliant database (for example SQLite). The Zip file include a test/demonstration program illustrating its use.
 * [|ODBCLIB]** - Richard Russell

Provides an ON COM style facility which will call a specified procedure if an event occurs on a serial communications port.
 * [|ONCOMLIB]** - Richard Russell

Used to parse command line parameters passed to a program and returns the number of parameters and an array containing the parameters themselves. Contains a convenient lexical analyser.
 * [|ReadArgs]** - Jon Ripley

The ReadLine library provide several flexible functions that replace the **INPUT** statement. Includes a full line editor with common keyboard shortcuts, clipboard support, cloaked input and a configurable line history buffer.
 * [|ReadLine]** - Jon Ripley

Create a Splashscreen for your program from a jpeg, bmp, windows metafile or icon file. Supports multiple monitors.
 * [|SPLASHSCREEN]** - Michael Hutton

Allows SQLite databases to be created and manipulated from BB4W programs.
 * [|SQLite3]** - Jon Ripley

The Win/Keyboard library provides functions to replace **GET** and **INKEY** that return regular unique top-bit-set values for function and editing keys, and returns distinct values for keys pressed with Shift, Control and Alt.
 * [|Win/Keyboard]** - J.G.Harston

The Win/Reg library provides simple functions to read and write strings in the **HKEY_CURRENT_USER** part of the registry.
 * [|Win/Reg]** - J.G.Harston

The Win/Registry library provides functions to read and write data in any part of the system registry.
 * [|Win/Registry]** - J.G.Harston