=====Libraries===== What is a library and why are libraries important? * [[http://en.wikipedia.org/wiki/Library_%28computer_science%29|Library (Wikipedia)]] * [[http://en.wikipedia.org/wiki/Code_reuse|Code reuse (Wikipedia)]] ==== Writing Libraries ==== * [[/Checking%20if%20a%20library%20is%20INSTALLed|Checking if a library is INSTALLed]] * [[/Commenting%20library%20code|Commenting library code]] * [[/Distributing%20crunched%20libraries|Distributing crunched libraries]] * [[/Guide%20to%20writing%20libraries|Guide to writing libraries]] * [[/Fixing%20a%20Bad%20library%20error|Fixing a 'Bad library' error]] * [[/Preventing%20a%20library%20from%20being%20run|Preventing a library from being run]] * [[/Using%20DATA%20statements%20in%20libraries|Using DATA statements in libraries]] ==== Supplied Libraries ==== * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#arraylib|ARRAYLIB]] - Array and matrix functions * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#asmlib|ASMLIB]] - Assembler extensions (CMOV and SSE) * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#asmlib2|ASMLIB2]] - More assembler extensions (SSE2) * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#callback|CALLBACK]] - Use Windows API functions which require a callback routine * [[/Object%20Orientated%20programming|CLASSLIB]] - Support for Object Classes (includes examples of use) * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#comlib|COMLIB]] - Accessing COM automation (ActiveX) controls * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#d3dlib|D3DLIB]] - Direct3D8 graphics * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#d3dlib|D3DLIBA]] - Direct3D8 graphics (with additional camera roll-angle parameter) * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#d3dlib|D3D9LIB]] - Direct3D9 graphics * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#d3dlib|D3D9LIBA]] - Direct3D9 graphics (with additional camera roll-angle parameter) * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#datelib|DATELIB]] - Calendar functions * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#ellipselib|ELLIPSE]] - Plotting angled ellipses * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#eventlib|EVENTLIB]] - Synchronous dispatch mechanism for ON MOUSE, ON MOVE, ON SYS and ON TIME events * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#fnusing|FNUSING]] - Formatting and conversion * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#gdiplib|GDIPLIB]] - Antialiased graphics * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#hqsound|HQSOUND]] - High Quality sound patch * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#mdilib|MDILIB]] - Multiple Document Interface * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#multiwin|MULTIWIN]] - Multiple output windows * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#nowait|NOWAIT]] - Replacement functions that don't stall interrupts * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#socklib|SOCKLIB]] - Socket (network) connections * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#sortlib|SORTLIB]] - Sorts data arrays * SORTSALIB - Sorts arrays of structures (beware of different calling syntax) * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#spritelib|SPRITELIB]] - Sprites * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#stringlib|STRINGLIB]] - String functions * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#subclass|SUBCLASS]] - Intercept and process Windows messages * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#timerlib|TIMERLIB]] - Multiple single-shot or periodic timers which call a specified BASIC PROCedure * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#winlib|WINLIB]] - Toolbars and status bars * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#winlib2|WINLIB2]] - Dialogue boxes * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#winlib2|WINLIB2A]] - Dialogue boxes with context-sensitive help * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#winlib3|WINLIB3]] - Trackbars and progress bars * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#winlib4|WINLIB4]] - Property sheets and wizards * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#winlib5|WINLIB5]] - Boxes and buttons * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#winlib5|WINLIB5A]] - Boxes and buttons with specified parent window * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#utf8lib|UTF8LIB]] - UTF-8 string functions * [[http://www.bbcbasic.co.uk/bbcwin/manual/bbcwing.html#xmllib|XMLLIB]] - Parse XML files ==== Downloadable Libraries ==== **[[http://jonripley.com/bb4w/libraries/ArrayIO.html|ArrayIO]]** - Jon Ripley \\ ArrayIO provides routines to write entire arrays to a file and read them back again. **[[http://planarsoft.com/server/site?lang=en&openTab=Downloads|BB4WMAPM]]** - Christos Stogiannopoulos \\ The BB4WMAPM library provides an interface between the //BBC BASIC for Windows// programming language and the [[http://www.tc.umn.edu/%7Eringx004/|MAPM arbitrary precision mathematics library]]. **[[http://www.rtr.myzen.co.uk/box2dlib.zip|BOX2DLIB]]** - Richard Russell \\ Used in conjunction with BOX2D221.DLL and (optionally) BOX2DDBG.BBC, which are contained in the ZIP file, provides access to the [[http://box2d.org/|Box2D Physics Engine]]. **[[http://jonripley.com/bb4w/libraries/CardLib.html|CardLib]]** - Jon Ripley \\ CardLib provides an interface to the Windows cards library used by all the card games supplied with Windows. **[[http://mdfs.net/System/Library/BLib/|Date]]** - J.G.Harston \\ 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. **[[http://www.svrsig.org/software/DrawLib.htm|DrawLib]]** - Chris Hall & Chris Dennis \\ Two libraries DrawLib and ShowDraw used to create and display Acorn Draw format files on Windows. **[[http://www.rtr.myzen.co.uk/forthlib.zip|FORTHLIB]]** - Richard Russell \\ Incorporate subroutines written in Forth in your BASIC program. Forth is much faster than BASIC, but easier to learn than assembly language. **[[http://www.rtr.myzen.co.uk/gdip_image.zip|gdip_image]]** - Hans van der Hoeven \\ 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 [[http://tech.groups.yahoo.com/group/bb4w/files/Graphics/gdip_image_demo.bbc|gdip_image_demo.bbc]] explains the use of and demonstrates the possibilities of the library. **[[http://www.rtr.myzen.co.uk/hashlib.zip|HASHLIB2]]** - Michael Hutton \\ Calculates the MD2, MD4, MD5, SHA or SHA-1 hash of a file or a block of data in memory. **[[http://www.rtr.myzen.co.uk/hashlib.zip|HASHLIB3]]** - Michael Hutton \\ As HASHLIB2 but additionally calculates the SHA-256, SHA-384 or SHA-512 hash. **[[http://www.rtr.myzen.co.uk/himelib.zip|HIMELIB]]** - Richard Russell \\ Interfaces to the [[http://www.devotechs.com/|Huge Integer Math and Encryption]] library. **[[https://groups.io/g/bb4w/files/Libraries|IMGLIB]]** - Richard Russell \\ A pair of libraries, one for BB4W and one for BBCSDL, for displaying rotated, scaled and/or flipped images. **[[http://jonripley.com/bb4w/libraries/LoadDLL.html|LoadDLL]]** - Jon Ripley \\ LoadDLL provides a simple and fast interface for accessing functions provided by DLLs (Dynamic Link Libraries). **[[http://jonripley.com/bb4w/libraries/MAlloc.html|MAlloc]]** - Jon Ripley \\ Memory allocation library (using the Windows API). Provides functions for memory allocation, reallocation and freeing. **[[http://mdfs.net/BLib/|MAlloc]]** - J.G.Harston \\ Memory allocation library (using BBC BASIC's heap). Provides functions for memory allocation, reallocation and freeing. **[[https://groups.io/g/bb4w/files/Libraries/odbclib.zip|ODBCLIB]]** - Richard Russell \\ Supports accessing an ODBC-compliant database (for example SQLite) . The Zip file include a test/demonstration program illustrating its use. **[[http://www.rtr.myzen.co.uk/oncomlib.zip|ONCOMLIB]]** - Richard Russell \\ Provides an ON COM style facility which will call a specified procedure if an event occurs on a serial communications port. **[[http://jonripley.com/bb4w/libraries/ReadArgs.html|ReadArgs]]** - Jon Ripley \\ 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. **[[http://jonripley.com/bb4w/libraries/ReadLine.html|ReadLine]]** - 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. **[[http://www.rtr.myzen.co.uk/SPLASHSCREEN.bbc|SPLASHSCREEN]]** - Michael Hutton \\ Create a Splashscreen for your program from a jpeg, bmp, windows metafile or icon file. Supports multiple monitors. **[[http://jonripley.com/bb4w/libraries/SQLite_BB4W_Release_1.zip|SQLite3]]** - Jon Ripley \\ Allows SQLite databases to be created and manipulated from BB4W programs. **[[http://mdfs.net/BLib/Win|Win/Keyboard]]** - J.G.Harston \\ 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. **[[http://mdfs.net/BLib/Win|Win/Reg]]** - J.G.Harston \\ The Win/Reg library provides simple functions to read and write strings in the **HKEY_CURRENT_USER** part of the registry. **[[http://mdfs.net/BLib/Win|Win/Registry]]** - J.G.Harston \\ The Win/Registry library provides functions to read and write data in any part of the system registry.