2026-09-07 M. Vilain <uglymike17@gmail.com>
	* The project has now moved to v2.2.0 state and includes all changes made to v2.1.2.
	* Programs run faster: most run a fifth to a quarter quicker than 2.1.1, and none run slower. The gain is in the way values are held while a program runs rather than in any one statement, so drawing, arithmetic and array work all benefit -- a program that only draws gains about as much as one full of arrays.
	* Arrays use about half the memory they used to, and the statements that act on a whole array at once -- DIM, REDIM, copying one array into another, and the MAT statements -- are three to five times faster. Setting up a million-element array takes a quarter of the time it did.
	* New vector operators, which do the arithmetic of vectors on ordinary arrays. a DOT b gives the dot product as a single number, and a CROSS b gives the cross product -- a vector when both sides have three elements, and when both have two the single number that says which way round they turn, which is what a two dimensional program wants for a torque, a winding order, or which side of a line a point falls on. NORM(v) gives the length of a vector and UNIT(v) gives the same vector scaled to length one, so a direction can be had with the distance taken out of it. Any array will do as a vector -- a row, a column, or whatever MAT TRN hands back -- and only the number of elements has to agree, so DOT and CROSS work on the shape a program already holds its vectors in. Whole numbers in give a whole number out, the way the MAT statements do. CROSS binds tighter than DOT, so the triple products a DOT b CROSS c and a CROSS b DOT c both read as they are written on paper, and a DOT b = 0 asks whether the two are at right angles without needing brackets. Mismatched lengths, a cross product of anything but two or three elements, an operand that is not an array, and UNIT of a vector with no length are all reported as errors you can catch. See the new Examples/Physics/VectorProducts.kbs, which takes each of the four in turn -- the angle between two arrows, which side of a line a point falls on, a ball that chases the mouse at a steady speed, and a turning triangle lit by the direction it faces.
	* MOD may be written in capitals. a MOD b, a Mod b and a mod b are all the remainder operator, as % has always been in any case. Note that this makes mod a reserved word in every capitalisation, so a program that used MOD as the name of a variable has to rename it.
	* NOISE is coloured as a keyword in the editor, as the rest of the statements and functions are.
	* New FRAMERATE statement, which holds a drawing loop to a steady number of frames a second. FRAMERATE 60 written inside the loop waits until the next frame is due rather than for a fixed length of time, so however long the drawing took comes out of the wait instead of being added to it. The loop therefore runs at the rate asked for whatever the scene costs and whatever the machine is, and a program written on a fast computer keeps its speed on a slow one. A frame that overruns its budget is not chased: the next frame starts afresh rather than running a burst of short ones to make the time back. FRAMERATE 0 takes the cap off again. The statement is FRAMERATE rather than FPS so that fps stays free as a variable name.
	* PAUSE now waits for the time it is given, to about a millisecond, on every platform and whatever else the machine is doing. Any delay up to a day is honoured. Pressing Stop ends a program that is sitting in a PAUSE at once, rather than when the pause runs out on its own.
	* New turtle graphics module, Modules/turtle.kbs, which draws by telling a turtle to go forward and turn rather than by working out coordinates. INCLUDE "turtle.kbs" on a line of its own pulls it in, and the bare name works wherever the program is saved because the IDE searches the Modules folder it ships with. The turtle starts in the middle of the graphics window facing north with its pen down, and is moved with t_forward, t_backward, t_right, t_left, t_setheading, t_goto and t_home; t_penup and t_pendown lift and lower the pen, t_reset re-centres the turtle after a GRAPHSIZE, and t_x, t_y, t_getheading and t_getpen read back where it is and what it is doing, which is what lets a program note a spot, go off and draw elsewhere, and come back to it -- a recursive tree is written that way. Angles are in degrees measured clockwise from north, as turtle graphics has always had them, and t_fw, t_bw, t_r, t_l, t_pd and t_pu are short forms of the six commands a drawing repeats most. Everything else stays with the language's own statements: COLOR sets the pen colour, PENWIDTH its width and CLG clears the canvas, exactly as they do for anything else drawn, and a circle or a label goes where the turtle is standing by feeding it t_x() and t_y(). A program that includes the module gives up those names as variables of its own. See the new Examples/Turtle/turtle_demo.kbs, which draws a square, a hexagon, a five-pointed star, a spiral and a recursive tree, each in a handful of lines. It is in the browser version's File/Open Example list too.
	* A program is no longer limited to about 5000 lines. Length is counted with everything a program INCLUDEs folded in, so a short program that pulled in a few large modules could reach the limit as easily as one long file, and crossing it stopped the program with a syntax error pointing at a line that had nothing wrong with it.

2026-08-30 M. Vilain <uglymike17@gmail.com>
	* The project has now moved to v2.1.2 state but will not be released as it has already been superceded by v2.2.
	* Windows: a running program's graphics no longer stop for seconds at a time until the mouse is moved. Animations that end each frame with REFRESH, and programs that draw without FASTGRAPHICS, now run at a steady rate whether or not the mouse is touched.
	* New WINDOW statement, which gives the graphics area coordinates of your own choosing. WINDOW x1,y1,x2,y2 puts x1,y1 at the top-left corner of the drawing area and x2,y2 at the bottom-right, and every drawing statement then works in those units -- so WINDOW -1,-1,1,1 puts 0,0 in the middle. The order of the arguments picks which way each axis runs: WINDOW -1,1,1,-1 puts y=1 at the top, the way graph paper does. PIXEL, MOUSEX, MOUSEY, CLICKX and CLICKY read back in the same units, so what you draw is what you can find again. PENWIDTH and FONT keep their sizes in pixels, so lines and lettering do not stretch with the window. The window applies to whatever you are drawing on, so it follows SETGRAPH onto an image and back. WINDOW on its own goes back to plain pixels, which is how a program starts.
	* Graphics statements now accept fractional coordinates. PLOT, LINE, RECT, CIRCLE, ELLIPSE, ARC, CHORD, PIE, STAMP, TEXT and IMGLOAD place what they draw where they are told instead of rounding down to the nearest whole pixel, so a circle at 100.5, 100.5 sits half a pixel right of and below one at 100, 100. Whole-number coordinates draw exactly as they always did. GETSLICE and PUTSLICE still address whole pixels, as they must.
	* New MAT statements, which do arithmetic on whole arrays at once. MAT ADD, MAT SUB and MAT MUL take a second matrix or a single number, MAT MUL between two matrices is the mathematician's matrix product, and MAT TRN and MAT INV transpose and invert. The matrices are ordinary arrays read as rows by columns, so DIM Position(200,2) is 200 rows of an x and a y, and MAT ADD Position = Position + Velocity moves every particle in one statement. The destination is given the shape of the answer and may be one of the sources. Mismatched shapes, a matrix that is not square and a singular matrix are reported as errors you can catch. See the new Examples/Simulations/MatrixParticles.kbs, which runs 200 particles with no FOR loop in the physics at all.
	* An array or map literal may now be written over as many lines as it needs. Inside the mustaches the end of a line no longer ends the statement, so a table can be laid out a row to a line -- Level = {{1,1,1}, then {1,0,1}, then {1,1,1}} on three lines -- instead of being crammed onto one very long one. The mustaches themselves may sit on lines of their own, blank lines between the rows are ignored, and everywhere a literal was accepted before it may now be spread out: a plain assignment, DIM, and the map form written with ->. A remark may be put inside the mustaches too, so the rows of a table can be annotated as they are laid out.
	* New NOISE function, which gives a smooth, repeatable value between -1 and 1 from an OpenSimplex noise field. NOISE(x) reads along a line and NOISE(x,y) reads from a plane, and unlike RAND -- which hands back an unrelated value every call -- the same coordinate always gives the same value and nearby coordinates give nearby ones, which is what makes it suit terrain, clouds, textures and wandering paths. SEED now fixes the noise field as well as the random number sequence, so a seeded program draws the same landscape every run.
	* SPRITEPOLY now places the polygon correctly wherever it was drawn, and leaves room for the pen. It used to subtract the bounding box's top from every x and its left from every y, so a shape that was not already in the corner of its own bounding box came out the wrong size -- a 30 by 5 rectangle drawn at 5,1 became a sprite 34 wide and 1 tall. It also sized the sprite to the bare polygon, so half of a wide pen was clipped off every edge, and nothing the program did could make room because any margin it added was taken straight back out. A sprite is now the polygon plus the pen width, which is the same size the old stamp-and-spriteslice recipe produced by hand.

2026-08-27 M. Vilain <uglymike17@gmail.com>  
	* The project has now reached a stable v2.1.1 state.
	* Browser (WASM): what is in the editor now stays in the browser, so a refresh, a closed tab or a restarted browser no longer loses the program. Every open tab comes back with its text, its name and whichever one was in front. Saving still downloads the file exactly as before -- this is a safety net, not a replacement for saving.
	* Programs run faster, with arithmetic-heavy loops roughly twice as fast. The interpreter reuses the memory it holds values in instead of asking the system for a new block and handing it back for every value it creates, and it steps from one instruction to the next with less work. The browser version gains the most.
	* The Help/About BASIC-256 box now names the project's own website, https://basic256.org, as well as the documentation site, https://doc.basic256.org.
	* The Windows downloads no longer include Microsoft's Visual C++ redistributable as a file of its own. It has always been, and still is, bundled inside the installer, which offers to install it if the system needs it.
	* Windows 11: the titles in the menu bar -- File, Edit, View and the rest -- are drawn at the system text size, like everything else in the program, and the bar makes room for them when that size is large.
	

2026-08-10 M. Vilain <uglymike17@gmail.com>  
	* The project has now reached a stable v2.1 state.
	* The check box or radio button in front of a checkable menu item now sits clear of the item's text instead of overlapping it, and is drawn at the size the platform intends.
	* Maximising the IDE window no longer gives all the extra room to the Edit window: it keeps at most two thirds of the width and the Graphics and Text Output windows share the rest. The Edit window is left alone if you have already dragged the divider to give the output side more than that.
	* A program can now maximise the IDE window itself with the new MAXIMIZE statement. MAXIMIZE 1 does exactly what the window's maximise button does and MAXIMIZE 0 what the restore button does, and the result is remembered for the next start just as it is when you press those buttons yourself. A program started with -f fills the screen without being maximised, so MAXIMIZE 0 has nothing to restore there and does nothing.
	* The browser version has moved to an address of its own, https://run.basic256.org. The links in the README that open a program with ?run= and pick a window layout with &mode= now use it.
	* Docking the Graphics window back into the IDE after it has been floated no longer drags its floating size in with it. The pane comes back sized to the graphics canvas -- 500 wide for the usual 500x500, wider or taller if the program called GRAPHSIZE or the view is zoomed -- and never takes more than half the IDE window, whether it is docked at the side or above or below the Edit window.
	* Browser (WASM): INCLUDE now finds the bundled module library, so a program running in the browser can say include "math.kbs" exactly as it does on the desktop. The library is built into the page, so there is nothing to download or install first.
	* The Windows installer no longer puts an extra Basic256 folder in the installation directory holding a second copy of the Examples and the TestSuite. The BASIC256-Windows.zip download never had this.
	* A new Example program, SpriteStatementDemo.kbs, has been added in the Examples/Sprites directory. It is a menu-driven tour of all eight SPRITE statements and of the functions that read a sprite back -- position, size, scale, rotation, opacity, visibility and collision -- with a step for each and a closing flock of mascots that puts them together. It is in the browser version's File/Open Example list too.
	* The program has a new mascot, BitBot. He'll pop up here and there (README.md, doc.basic256.org, Discord,...). He exists in different poses. The images are drawn on a transparent background, so they sit properly on a dark or light theme.

2026-08-01 M. Vilain <uglymike17@gmail.com>  
	* The project has now moved to Beta3 state, meaning it runs, but issues might still lie dormant in both program and documentation
	* Whole numbers are the full 64 bits on every platform: the bitwise shift operators (<< and >>) work across all 64 bits, reading a large whole number from a string or with INPUT keeps its value, and a number too large to fit in a whole number is reported as an error.
	* The Edit and Text Output windows now follow a colour theme, chosen from View/Theme: Follow System (the default), Light, or Dark. Follow System needs Qt 6.5 or later and is greyed out on older builds. The Graphics Output window is not themed and stays white, so existing programs draw exactly as before.
	* The About box, Help/Online help and F1 keyword help now open https://doc.basic256.org, which serves the same documentation site under its own name.
	* Help/Check for update now simply opens the GitHub releases page, https://github.com/uglymike17/basic256/releases, where the builds for every platform are published. Compare the version there with the one in Help/About BASIC-256. 
	* Browser (WASM): sound and speech work on iPad and iPhone, started by the first touch anywhere on the page, and playing a sound file or a URL with SOUND, SOUNDPLAY or SOUNDPLAYER goes through the same in-browser decoder as SOUNDLOAD, so SOUNDLENGTH, SOUNDPOSITION and SOUNDSEEK work on them too. SAY gives up after a wait sized to the length of the text if the speech engine never reports having finished, so a program carries on instead of hanging. If an iPad stays silent, check the side switch or the Control Centre mute, which silence web audio independently of the volume keys.
	* Browser (WASM): the demos that expected a keyboard can be driven with a finger. BubbleUniverse_variations starts on a tap and cycles its variations on a tap or a click, StrangeAttractors is explored by dragging and cleared with a double-tap, and AIChatbot fills the window instead of sharing it with the editor.
	* Examples: PacMan has been reworked -- a fixed 50 frames a second, a score that carries across lives, and the playfield narrowed so the score and legend have a panel of their own. A new game, Claude-AI-neon_snake, has been added.
	* Documentation: the ELLIPSE and SETGRAPH statements and the GETARRAYBASE function, none of which had ever been documented, now have pages on the Docusaurus website, and the optional LET keyword in front of an assignment is described on the Variables page.
	* Documentation: the bit shift operators (<< and >>) and the compound assignments &= and ;= are now documented, and the order of operations tables have been corrected to match what the interpreter actually does.
	* Menu items that switch something on or off -- the windows and toolbars in the View menu, Show Whitespace Characters, Wrap Long Lines, Graphics Window Grid Lines, and the open programs in the Window menu -- now show a check box in front of them, empty or ticked, so it is clear which entries are settings and which are commands. Where only one of a group can apply at a time, View/Theme and View/Graphics Window Zoom, the entries show a round radio button instead.
	* The program has a new logo. It is used for the icon of the program itself on every platform -- Windows, macOS, Linux and the browser tab -- on the welcome page of the Windows installer, in the Help/About BASIC-256 box in place of the desktop's generic information icon, and on the loading screen of the browser version. The icons are drawn on a transparent background, so they sit properly on a dark taskbar or Dock instead of in a white square.

2026-07-26 M. Vilain <uglymike17@gmail.com>  
	* The project has now moved to Beta2 state, meaning it runs, but issues might still lie dormant in both program and documentation
	* Polyphonic sound have been corrected
	* A new Example program 'SoundStatementDemo.kbs' demonstrating the new SOUNDxxx statements has been added to the Examples/Sound_Speech directory
	* A new Example program 'ImageStatementDemo.kbs' demonstrating the new IMAGExxx statements has been added to the Examples/Image directory
 	* The REF() command (passing arrays to subroutines by reference) has been corrected.
	* The Edit and Output windows are now pinned to a white/light scheme so code and text stay readable on desktops using a dark OS theme (Ubuntu dark, iPhone/iPad, etc.).
	* The project has been relicensed from GPL version 2 to GPL version 3 or later.  The bundled md5 (RSA Data Security) and LineNumberArea (Qt example, BSD) files keep their own compatible licenses.
    * A macOS for Intel has been added but this requires Sequoia (macOS 15)

2026-07-17 M. Vilain <uglymike17@gmail.com>  
	* The project has now moved to Beta state, meaning it runs, but issues might still lie dormant in both program and documentation
	* A Docusaurus website has been created to replace the old doc.basic256.org in the code and is activated via the menu-item Help/Online help or by pressing F1 over a keyword. It lives on https://uglymike17.github.io/Basic256-Docs and is also shown in the Help/About BASIC-256 menu-item.
	* All desktops now show a File/Open Examples. Previously, only the WASM build gave this option.
 	* Fix small errors that cropped up during testing.

2026-07-10 M. Vilain <uglymike17@gmail.com>  
	* Another Big one: Migrating Basic256 from Qt5 to Qt6 has allowed us to build Basic256 as a WASM application, meaning you can run it from the Web Browser! Currently, it runs here: https://uglymike17.github.io/basic256/
	There are some caveats on this explained in the README.md file.
 
	* Fix small errors that cropped up during testing.

2026-07-05 M. Vilain <uglymike17@gmail.com>  
	* Big one: Migrated Basic256 from Qt5 to Qt6, which is a major update that will allow for better performance on ARM-based systems like Raspberry Pi.|  
	* Fix small errors that cropped up during edge-tests in TestSuite run.

2026-07-04 M. Vilain <uglymike17@gmail.com>  
	* Added: CLI option -f when used with -r/-a/-g/-t will now open the program fullscreen
	* Added: CLI option -s when used will supress all screen output. Mainly used during testing but could be used to read/write/change a file/DB,...
	* Small bugfix: Windows Installer created spurious basic256 directory with Examples and TestSuite.


2026-06-30 M. Vilain <uglymike17@gmail.com>  
	* Provide AppImage files for Linux-x86 and Linux-ARM in addition to the tar.gz files  
	* Improved: CLI option -g will now open the Graphics window in the size you defined it (either 500x500 or by the graphsize you specified)  
	* Small bugfix: on Windows, Iconlabels in Toolbars now follow the system settings..  


2026-06-13 M. Vilain <uglymike17@gmail.com>  
    * Copy Sourceforge build 2.0.99.10.2 over to Github    
	* replace qmake (*.pro) with CMake (build.yml, CMakeLists.txt)  
	* Replace MinGW with MSYS2 for Windows builds.  
	* Replace deprecated Qt operators  
	* move some Posix structures to Qt structures  
	* provide basic.app for MacOS Silicon (ARM64) using brew with compiler AppleClang 17.0.0.17000013  
	* provide stand-alone tarball for Linux-x86 Using compiler GNU 11.4.0.  
	* provide stand-alone tarball for Linux-ARM (RPi Trixie). Using compiler GNU 13.3.0.  
	* provide standalone zip file for Windows. No .nsi yet


2011-2026 No changelog entries although a lot of changes happened over the years.


2011-08-08 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.68
	* added TEXTWIDTH statement to return width of a string i the current font before output to the graphics area

2011-08-07 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.67
	* added -r option to command line to switch UI to run only mode

2011-07-01 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.66
	* changed inpout32.dll linking to dynamic for Windows port to eliminate the dll hell
	* merged in http://patch-tracker.debian.org/patch/series/view/basic256/0.9.6.60-2/04_portable_sound.diff
	* fix off-line documentation load on windows - to use the application absolute path to fing help folder
	
2011-05-01 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.65
	* renamed spanish help file to es not sp

2011-03-19 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.65
	* Added GRAPHVISIBLE, EDITVISIBLE, and OUTPUTVISIBLE statements to hide sections if the UI from a running program.

2011-03-18 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.64
	* Added option to View menu to hide Edit Widget (program source)

2011-03-17 Javier Gonz�lez
	* new Spanish UI translation

2011-03-05 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.63
	* Added replace dialog and refined find dialog

2011-03-04 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.62
	* Added find dialog

2011-02-14 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.61
	* fixed windows only problem with DIR statement
	* restructured and documented the doc tree
	* worked on the windows installer to allow for optional install of offline help and examples

2011-02-14 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.60
	* added MSEC function to return program running time in milliseconds

2011-01-20 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.59
	* added option to use espeak for TTS from shell not as a library
              * update documentation in BASIC256.pro and COMPILING.txt

2011-01-07 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.58
	* added OSTYPE function to return the type of OS this was compiled

2011-01-06 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.57 (473)
	* added IMPLODE to change an array to a string
	* updated Russian translation

2011-01-05 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.56 (469)
	* added INSTRX() to return position of a Regular Expression
	* added REPLACEX() function to find an regular expression and replace with a string
	* added COUNTX() function to retuen number of occourances of a regular expression
	* added EXPLODEX() function to split a string into a string or numeric array on a regular expression

2011-01-03 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.55 (468)
	* allow assignment of indirect list of values {} to redimision an array to the correct size
	* added two optional arguments to INSTR() - Start and IgnoreCase
	* added Unicode safe string REPLACE() function
	* added Unicode safe substring count COUNT() function
	* added EXPLODE() function to split a string into a string or numeric array

2011-01-02 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.54 (467)
	* added dir() function

2010-12-31 sergey irupin <lamp@altlinux.org> 0.9.6.53 (466)
	* add offline help system
	* replace About window
	* fixed highlighting of keywords

2010-12-13 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.53 (452)
	* changed variables object to use a map for storage and not a static array - in preparation for some day handling run levels

2010-12-12 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.52 (451)
	* moved variables out of interperter into a new object in preparation for some day adding multiple run levels to handle true functions and subroutines
	* also celeaned up several variable related memory leaks

2010-12-10 sergey irupin <lamp@altlinux.org> 0.9.6.51 (449)
	* add 2 mathematics functions - sqr()/sqrt(), exp()

2010-11-26 sergey irupin <lamp@altlinux.org> 0.9.6.50 (448)
	* icon updates and fixed functions upper() and lower()

2010-11-18 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.49 (443)
	* added close of database files if database not closed by program

2010-11-03 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.48 (439)
	* removed mutex from say statement - eliminate frezing after speech

2010-10-25 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.47 (438)
	* initial MAC port - tested help & preferences
	* added Mac Icon
	* added logic to save font size as a preference

2010-10-24 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.46 (437)
	* initial MAC port - tested sound, say, playwav, database, and networking

2010-10-17 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.45 (435)
	* added IMGSAVE statement to save graphics area as a .png or other qt supported file type

2010-10-15 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.44 (434)
	* forces locale to "C" so that decimal mark '.' will always work

2010-10-11 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.43 (433)
	* fixed seek statement

2010-09-21 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.42
	* tested inpout32 with Windows7-x64 and Vista-x32 and changed compiling instructions
	
2010-09-20 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.41 (431)
	* finished and tested PORTIN/PORTOUT statements for parallel port control (WINDOWS ONLY)
	* added preference settings to allow or disable PORTIN/PORTOUT statements
	* added three new operators &, | and ~ - bitwise and or and not that work with integers

2010-09-19 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.40 (430)
	* INCOMPLETE - Code to start adding PORTIN/PORTOUT statementf for parallel port control

2010-09-14 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.39 (429)
	* fixed SYSTEM statement to use mutex to wait correctly
	* added preference settings to allow or disable system, get/setsetting

2010-09-12 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.38 (428)
	* added GETSETTING and SETSETTING for persistant application storage to the registery/config folder

2010-09-12 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.37 (427)
	* Created password protected preferences dialog - nothing on it yet except the password
	* added MD5 function to return a hex string digest for a string

2010-09-11 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.36 (425)
	* added settings to restore IDE and help to size and location when re-opened
	* added list of 9 most recently opened or saved items for quick open on file menu

2010-09-08 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.35 (423)
	* Added NETADDRESS to return the local IPv4 address as a string

2010-09-06 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.34 (422)
	* Added kill statement to delete a file from the file system

2010-08-22 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.33 (421)
	* fixed problem with focus effecting "key" statement - if focus was ever lost from
	- graphics window - key statement would stop working.  added key trap to BasicOutput
	- and logic to allow BasicGraph to regain focus
	* syntax highliter updated for a few misses commands

2010-08-17 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.32 (419)
	* Added net* statements and functions to the syntax highlighter and a new networking example

2010-08-17 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.31 (418)
	* fixed linux to compile again after changes in 0.9.6.30
	* removed most of the errors from LEX/basicParse.y 

2010-08-17 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.30 (416)
	* changed all tokens to B256... in lex folder to stop conflicts with windows wtypes.h
	* work on porting to winsock (Windows) - have functioning well enough to test
	* changed net commands to act like file io commands and allow up to 8 open
	- sockets 0-7 with 0 being the default.
	
2010-08-15 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.29 (416)
	* cleaned up socket release (close)
	* added NETDATA function to return true if data is waiting to be received

2010-08-13 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.28 (415)
	* added first attempt at networking statements
        - statements NETLISTEN, NETCONNECT, NETREAD, NETOPEN, and NETCLOSE
	* added new networking folder to Examples with a few test programs
	* not compiled or tested in Windows yet.

2010-08-09 j.m.reneau <renejm@users.sourceforge.net> 0.9.6.27 (412)
	* fixed string comparison problem caused since 0.9.6h

2010-08-05 j.m.reneau <renejm@users.sourceforge.net> 0.9.6z (409)
	* Rewrote the error messaging process to allow for error trapping and reporting logic in BASIC code
	* added ONERROR label to jump to a subroutine to handle errors
	* added LASTERROR, LASTERRORMESSAGE, LASTERRORLINE, and LASTERROREXTRA functions that describe last runtime error
	* added OFFERROR statement to restore default error handling - fail on error
	* changed parser to allow labels at the begining of any line or on a line by themselves
	* added display of column number of cursor in status bar when editing
	* added _ as a valid character in a veriable or label name (first letter MUST still be a letter)


2010-08-02 j.m.reneau <renejm@users.sourceforge.net> 0.9.6y
	* Added sqLite database processing - dbopen, dbclose, dbsetopen, dbsetclose, and dbexecute statements, also dbint, dbfloat, dbstring, and dbrow functions to manipulate recordsets

2010-07-27 j.m.reneau <renejm@users.sourceforge.net> 0.9.6x
	* left alen, alenx, and aleny in lex files when adding 2d and redim of arrays - unused - removed

2010-07-26 j.m.reneau <renejm@users.sourceforge.net> 0.9.6w (405)
	* added decimal statemene to define maximum number of decimal places to display
          (full precision of a double is still being maintained behind the scenes)
	* fixed web site on about box
	* added recent new statements to syntax highliter

2010-07-21 j.m.reneau <renejm@users.sourceforge.net> 0.9.6v (403)
	* fixed several gramatical errors with file messages - thanks joel
	* removed maximum size of graphical output widget

2010-07-13 j.m.reneau <renejm@users.sourceforge.net> 0.9.6u (402)
	* fixed wavwait logic for compile under Win32.  Also noticed in the QSound documentation
	  that wavwait will not work under Windows because of a quirk with the library.
	* made the graphics and text output so that they may float

2010-07-04 j.m.reneau <renejm@users.sourceforge.net> 0.9.6t
	* added new wavwait statement to wait for the currently playing wav to finish

2010-07-02 j.m.reneau <renejm@users.sourceforge.net> 0.9.6s
	* totally re-wrote linux sound functionallity to use the SDL library and SDL_mixer.  Resolved issued with QSound (requiring NAS) and the /dev/dsp not being released bu the TTS libraries.

2010-06-25 j.m.reneau <renejm@users.sourceforge.net> 0.9.6r
	* added currentdir and changedir statements to manage the current folder
	* moved documentation to WIKI at doc.basic256.org and changed link in documentwindow.

2010-06-25 j.m.reneau <renejm@users.sourceforge.net> 0.9.6q
	* found read statement removed from LEX - readded
	* fixed string pointer conversion in readline
	* changed sprite move to limit range to 0-graphwidth|graphheight-1
	* changed all file io statements to allow for 0-7 files simultaneously - syntax didn't change for single file operations but new filenumber parameter added to allow for multiple files

2010-06-14 j.m.reneau <renejm@users.sourceforge.net> 0.9.6p (393)
	* re-wrote the way color "Clear" works
	- getcolor and pixel will return a -1 when the drawing color or pixel requested is clear (or after a clg and nothing has been drawn there)
	- the CLEAR constant/function now has a value of -1
	- all of the drawing commands (point,line,rect,cir,poly,stamp) now will replace pixels with a transparent when color is clear
	# added clear of the graphics output area - when initialized to cleanup LINUX display

2010-06-13 j.m.reneau <renejm@users.sourceforge.net> 0.9.6o
	* added spritev - visible function
	* added spriteslice - extract a sprite from the screen and demo program
	* changed sprite to be not visible when created - so that is can be moved and so that it does not change the screen when sliced out.

2010-06-09 j.m.reneau <renejm@users.sourceforge.net> 0.9.6n
	* fixed several memory leaks with strings from stack and variable assignments
	* added sprites - spritedim, spriteload, spritemove, spriteplace, spritex, spritey, spritew, spriteh, and spritecollide

2010-06-07 j.m.reneau <renejm@users.sourceforge.net> 0.9.6m
	* fixed linux compile with lib espeak
	* added logic to parser to allow for whitespace before a label - to allow older examples to run

2010-06-01 j.m.reneau <renejm@users.sourceforge.net> 0.9.6l
	* fixed help display path when windows installed.
	* added getslice, putslice, and imgload into syntax highlighter
	* changed imgload from 0.9.6k to place the center of the image at the specified coordinates
	* added rotate and scale parameters to imgload like stamp

2010-05-31 j.m.reneau <renejm@users.sourceforge.net> 0.9.6k (377)
	* added imgload statement to load a bmp, gif, jpg, or pgn from a file and siaplsy it on the graphics output window
	* compiled new ru translation from Sergey

2010-05-25 j.m.reneau <renejm@users.sourceforge.net> 0.9.6j (376)
	* added ability to enter integers in code with 0[bB][01] for binary 0[oO][0-7] for octal and 0[xX][0-9a-fA-F] for hexidecimal

2010-05-18 j.m.reneau <renejm@users.sourceforge.net> 0.9.6i (374)
	* added dialog to verify overwriting file
	* added dialog to verify loading program and loosing changes
	* changed new dialog to only appear if unsaved changes are in buffer
	* added dialog on close to verify loosing changes (both exit and window close)
	* added undo and redo to menu and toolbar for editor
	* changed genhelp.list to make all ids and see also links lowercase - for LINUX

2010-05-18 j.m.reneau <renejm@users.sourceforge.net> 0.9.6h (370)
	* added search to Documentation Window

2010-05-17 j.m.reneau <renejm@users.sourceforge.net> 0.9.6g (369)
	* changed Documentation Window to use WebView to fix the #tags for navigation

2010-05-12 j.m.reneau <renejm@users.sourceforge.net> 0.9.6f (362)
	* added error statements to linus sound and speech functions.  They are still rough and troublesome.

2010-05-11 j.m.reneau <renejm@users.sourceforge.net> 0.9.6e (361)
	* added statements to BASIC256.pro file so qmake would make the "make install" for linux to ease build

2010-05-10 j.m.reneau <renejm@users.sourceforge.net> 0.9.6c (359)
	* changes for fontsize
	* update Russian translation

2010-05-09 j.m.reneau <renejm@users.sourceforge.net> 0.9.6b (353)
	* GetSlice returns a hex string representing a slice (rectangular area) of the screen
	* PutSlice will draw the slice.  you may defina a transparent color in slice.

2010-05-02 j.m.reneau <renejm@users.sourceforge.net> 0.9.6a (350)
	* handle Utf8 strings (drblast)
	* rewrite string functions to use unicode characters
	* now program save and load in utf8
	* compiled RU translation

2010-04-18 j.m.reneau <renejm@users.sourceforge.net> 0.9.5v (329)
	* added \ operator for integer division
	* added log() and log10() functions

2010-04-15 j.m.reneau <renejm@users.sourceforge.net> 0.9.5t (326)
	* Redim an array to change it's size while maintaining it's contents

2010-03-08 j.m.reneau <renejm@users.sourceforge.net> 0.9.5m (318)
	* changed color staretemt to accept a single number RGB value r*255^2+g*255+b.
	* changed colors to constants that return a color integer
	* added rgb function to take color triplet and return color integer
	* added getcolor to return the value of the current drawing color
	* added pixel to get the color value of a pixel on the graphics output

2010-02-01 j.m.reneau <renejm@users.sourceforge.net> 0.9.5l (316)
	* finished linux implementastion of new sound command

2010-01-29 j.m.reneau <renejm@users.sourceforge.net> 0.9.5j (315)
	* added cut, copy and paste icons to tool bar
	* added option for sound to accept an array or list of frequency and durations.  This allows for fast smooth transition when playing multiple tones in a stream. linux logic not tested with this commit.

2010-01-28 j.m.reneau <renejm@users.sourceforge.net> 0.9.5i (312)
	* added volume command to control the amplitude of the sound wave out
	* changed LINUX TTS to flite engine from espeak. espeak was having problems releasing the /dev/dsp device
	* cleaned up syntax high-liter

2010-01-26 j.m.reneau <renejm@users.sourceforge.net> 0.9.5h (311)
	* added system command and cleaned up documentation

2010-01-26 j.m.reneau <renejm@users.sourceforge.net> 0.9.5g (310)
	* re-wrote say to use libespeak under linux - need to get same change made to windows
	* added logic to do the sound command in LINUX by writing a sine wave to /dev/dsp
	* update doc.lisp and compiling.txt with info
	* changed say command to use Microsoft SAPI instead of running a command line version of espeak. Also changed the Windows version of sound to generate a wave out to the soundcard and only use the system speaker if sound is not available (sound on a laptop)

2010-01-16 j.m.reneau <renejm@users.sourceforge.net> 0.9.5e (308)
	* added UPPER and LOWER character functions, cleaned up syntax highlighter

2010-01-15 j.m.reneau <renejm@users.sourceforge.net> 0.9.5c (306)
	* added two dimensional arrays to language (dim, reference, assignment, and input without prompt.  Still need to add to input with a prompt.
	* updated documentation and 15puzzle.kbs example

2010-01-12 j.m.reneau <renejm@users.sourceforge.net> 0.9.5c (303)
	* added left and right string functions, documented them
	* cleaned up syntax highliter with newer reserved words and fixed string highlight

2009-12-25 j.m.reneau <renejm@users.sourceforge.net> 0.9.4g (296)
	* added multi line if/endif and if/else/endif.  a;so added while/endwhile loop

0.9.4f
	* Asc, Chr, Float, Font, Text

2009-12-21 j.m.reneau <renejm@users.sourceforge.net> 0.9.4e
	* added mouse functions - Mouseb, Mousex, Mousey, Clickb, Clickx, Clicky, Clickclear

2009-12-03 j.m.reneau <renejm@users.sourceforge.net> 0.9.4
	* added date and time functions - Day,  Hour,  Minute,  Month,  Second, Year
	* added file functions - Eof, Writeline, Exist, Seek, Size
	* added sound and speak functions - Say, WAVplay, WAVstop

2009-11-05 j.m.reneau <renejm@users.sourceforge.net> 0.9.3o
	* added STAMP to draw a scaled poly at a position on the graphics display - sort of a simple sprite
	* added TRUE and FALSE boolean constant values
	* corrected problem with x&y reversing when an indirect list was defined for a POLY
	* removed the unused number of points from the syntax of POLY

2009-11-04 j.m.reneau <renejm@users.sourceforge.net> 0.9.3n
	* added SIZE, EXISTS, and SEEK for use during file IO

2009-11-02 j.m.reneau <renejm@users.sourceforge.net> 0.9.3m
	* rewrite popint/popfloat/popstring in interperter.cpp to return type not a stack value

2009-11-01 j.m.reneau <renejm@users.sourceforge.net> 0.9.3l
	* added alternate syntax of input statement to allow a numeric variable or array.  If non numeric data is entered a zero will be stored in the variable
	* added logic to allow for < > <= >= comparisons of strings

2009-10-31 j.m.reneau <renejm@users.sourceforge.net> 0.9.3k
	* added WAVPLAY and WAVSTOP commands to asynchronously play a wav audio file and to stop it

2009-10-29 j.m.reneau <renejm@users.sourceforge.net> 0.9.3j
	* added GRAPHHEIGHT and GRAPHIDTH to return the size of the graphics window
	* worked on the HTML documentation, added GRAPHSIZE, GRAPHWIDTH, and GRAPHHEIGHT

2009-10-28 j.m.reneau <renejm@users.sourceforge.net> 0.9.3.i
	* worked my prior changes into the trunk

2009-10-26 j.m.reneau <renejm@users.sourceforge.net> 0.9.3h
	* changed say statement to allow for same arguments (float and string) as print
	* changes say to use espeak without a direct path to the exe file. requires espeak in path on windows

2008-09-23 j.m.reneau <renejm@users.sourceforge.net> 0.9.3g
	* added SAY statement to call locally installed espeak to tts string - need to re-write for linux and would like to see it use the espeak lib

2008-09-08 j.m.reneau <renejm@users.sourceforge.net> 0.9.3f
	* added font "fontname", point, weight and text x, y, "txt" commands to paint text onto the graphics window (TestPrograms/testtextfont.kbs"

2008-09-07 <renejm@users.sourceforge.net>
	* added logic to yyerror in LEX\basicParse.y to fix syntax error line number problem.  If an error was the last token on the line it would report the error on the next line. check yytoken if \n and if it is then report previous line
	* added column number to syntax error printing - added count logic to basicParse.l
	* fixed rand - it would return values between 0 and 1 with 1 inclusive changed to return almost one but not quite (see TestPrograms/random_one.kbs)

2008-09-05 <renejm@users.sourceforge.net>
	* changed yacc scriopt for order of operations
	* removed imask logic from BasicGraph and Interperter.  Was causing refresh and draw errors on fast (dual core win32 xp&vista) boxes
	* split version # out of MainWindow into Version.h

2008-09-01 <renejm@users.sourceforge.net>
	* Added array testing to array input like logic added 2008-08-29
	* Added COLOR #,#,# to set colors by rgb
	* changed poly to draw filled not just outline
	* created NSIS install script for Win32

2008-08-29 <renejm@users.sourceforge.net>
	* Added Functions asc, chr, float
	* Added command readline and writeline to i/o an entire line as a string
	* Added boolean flag eof to test if file was at eof
	* added % operator for modulo
	* added logic to allow for concatenation if float + string or string + float
	* combined redudant graphics wait mutex logic in Interperter
	* in Interperter added popint, popfloat, popstring to the stack and changed most ops to use these new pops so that type checking could be removed in the op code
	* found error in array element assign (string and number) if assigning as an array a non array variable or a non defined variable
	* found error in arraylist assign (string and number) if assigning as an array a non array variable or a non defined variable - see uaarray.kbs
	* added print statement with no string to go to next line
	* added YEAR MONTH DAY HOUD MINUTE SECOND as constants like RAND and PI

2006-12-12 ian larsen <drblast@users.sourceforge.net>
	* LEX\basicParse.y: Added sound command.
	* LEX\basicParse.l: Added sound command.
	* RunController.cpp (playSound): Added sound support.
	* Interpreter.cpp (execByteCode): Added sound support.

2006-12-10 ian larsen <drblast@users.sourceforge.net>
	* BasicEdit.cpp (newProgram): fixed file overwrite bug when new program saves as last file's name.
	* LEX\basicParse.l: Added semicolon as alternate remark command

2006-12-04 ian larsen <drblast@users.sourceforge.net> 0.9.1
	* VariableWin.cpp (addVar): Changed variable window to use TreeWidget instead of a list, to allow for showing arrays.

2006-11-28 ian larsen <drblast@users.sourceforge.net> 0.9
	* Interpreter.cpp (execByteCode): Changed variable window updates to only occur in debug mode. Otherwise this is a severe performance hit for programs updating many variables in tight loops.
	* VariableWin.cpp (clearTable): Added Variable Watch window.

2006-11-26 ian larsen <drblast@users.sourceforge.net>
	* MainWindow.cpp (QMainWindow): Added two items to view menu to enable/disable text and graphics output windows.

2006-11-20 ian larsen <drblast@users.sourceforge.net>
	* Interpreter.cpp (execByteCode): Merged file ops and changed them to work more simply.
	* Changed array printing to print pointer address instead of int, which should fix the 64 bit compile problem.

2006-11-19 <fhendrikx@users.sourceforge.net>
	* Added file operations "open", "read", "write", "close". The read and write functions work on a token basis. EOF is returned by returning an empty token.
	* Added code to test new functions "fileops1.kbs" (and 2 and 3). 

2006-11-17 <fhendrikx@users.sourceforge.net>
	* Added string "length" function and sample code "length.kbs"
	* Added alternative spelling for "color" function: "colour"
	* Added "poly" function and sample code "polygon.kbs"

2006-11-07 ian larsen <drblast@users.sourceforge.net> 0.8
	* LEX\basicParse.y: Fixed rather important memory allocation bug that affected large programs that used lots of if statements.
	* Interpreter.cpp (execByteCode): Fixed bug 1589686

2006-11-03 ian larsen <drblast@users.sourceforge.net>
	* Interpreter.cpp (compileProgram): Changed the way the interpreter keeps track of line numbers. Now there's a CURRLINE bytecode which is executed every time the line changes. Also added step-by-step debugging.

2006-11-02 ian larsen <drblast@users.sourceforge.net>
	* Interpreter.cpp (execByteCode): Printing of floating point instead of integers fixed.

2006-11-01 ian larsen <drblast@users.sourceforge.net>
	* Interpreter.cpp (execByteCode): Added OP_LINE, which draws lines.

2006-10-31 ian larsen <drblast@users.sourceforge.net>
	* Interpreter.cpp (execByteCode): Added pause command
	* BasicEdit.cpp (cursorMove): Added slot to calculate line number when the cursor moves, and display it on the status bar.

2006-10-25 ian larsen <drblast@users.sourceforge.net> 0.7
	* Main.cpp (main): Added actions to edit menu. Removed close button on output windows.

2006-10-20 ian larsen <drblast@users.sourceforge.net> 0.6
	* Interpreter.cpp: Added internationalization support.
	* BasicEdit.cpp: Added internationalization support.
	* Main.cpp (main): Added internationalization support.

2006-10-18 ian larsen <drblast@users.sourceforge.net>
	* BasicEdit.cpp (BasicEdit): Editor now won't accept rich text, fixing weird font bugs.
	* RunController.cpp (saveByteCode): Added saveByteCode function which saves the compiled byte code to a .kbc file.
	* Main.cpp (main): Added save byte code function and Advanced menu.
	* LEX\basicParse.y: Changed to more dynamic allocation of byteCode to reduce memory footprint for small programs and to prevent memory errors from occurring on 64-bit architectures.
	* Interpreter.cpp (execByteCode): Added mathematical functions FLOOR, CEIL, RAND, SIN, COS, TAN, and ABS
	Separated initialize from compileProgram to support saving byte code as a file.
	
2006-10-16 ian larsen <drblast@users.sourceforge.net> 0.5
	* Interpreter.cpp (execByteCode): Added and, not, xor, and or operations
	* LEX\basicParse.y: Added AND, NOT, XOR, OR
	* LEX\basicParse.l: Added floor, ceil, int, str, and rand tokens
	* LEX\basicParse.y: Added arrays and string arrays.
	* Interpreter.h (struct variable): Added arrays and string arrays.
	* Interpreter.cpp (execByteCode): Added arrays and string arrays.

2006-10-11 ian larsen <drblast@users.sourceforge.net> 0.4
	* BasicGraph.cpp (keyPressEvent): Added keyPressEvent to set currentKey global variable whenever a key is pressed during run time.
	* LEX\basicParse.y: Added KEY keyword as floatexpr
	* Interpreter.cpp (execByteCode): Added OP_KEY operation, which gets the last key pressed.

2006-10-09 ian larsen <drblast@users.sourceforge.net>
	* LEX\basicParse.y: Added colon as multiple statement separator

2006-10-07 <drblast@users.sourceforge.net> 0.3.1
	* RunController.cpp (stopRun): Changed to threaded model.
	* Interpreter.cpp (execByteCode): Changed to a threaded model.
	* BasicOutput.cpp (getInput): Added slot to support threading.
	* Interpreter.cpp (execByteCode): Changed from using QPixmaps for graphical output to QImage, which is thread-safe.

2006-10-06 ian larsen <drblast@users.sourceforge.net> 0.3
	* Interpreter.cpp (pause): Removed unnecessary pause and unpause functions
	* RunController.cpp (pauseResume): Enabled Pause/Resume feature
	* PauseButton.h: Created Pause button which changes text based on operation 
	* Main.cpp (main): Removed Renumber Lines menu option
	(main): Pause/Resume button enabled

2006-09-30 ian larsen <drblast@users.sourceforge.net> 0.1
	* �n sourceforge.net uploaded the first version
