BBasic History<br><br>(I am not good at historical dates)<br>In the early 1980s schools were advised to start using computers and to enable this a very good computer was designed for use&nbsp; in schools in association with the BBC.&nbsp; It had a well thought out built in BASIC (in 32K Bytes of ROM).&nbsp; Unfortunately they made a very bad decision for their disc chip and an even worse decision on the fileing system. This was despite there being much better systems in use.
<br>The Basic had many Pascal like features with named functions and procedures and local variables.&nbsp; However the floats were only five bytes long and the integers 16 it (I think).<br>I had already taught myself assembly language for Z80, and the BBC machine had an assembler buit into the BASIC ROM and it was easy to learn the 6502 assembly language on the BBC.&nbsp; The IBM PC appeared with Microsoft&#39;s Quick Basic - but that was truly aweful.&nbsp; Pascal on the PC was full of problems and slow to develope. The compile cycle time was typically four minutes.
<br><br>I decide to study BASICs and their strong and weak points and after a year of study I started writing BBASIC which was strongly modelled on BBC BASIC but with many additional features.&nbsp; Anyone who would like a copy to play with can have one and I waive any copyrights
<br><br>BBasic was written for the PC in assembler for 8086 and later 80386 under DOS.<br><br>Numerics use 32 bit integers and eight byte floats although at that time maths co-processors were not fitted to all (most) machines.
<br>Variables were stored in a linked list but the pointer to the pointer to the variable was in the program.&nbsp; (most other BASICS had the variable name in the stored program and had to look up the name each and every time it was accessed. 
<br>&nbsp;This means that the name need be stored once only and the look up occurs once only at program writing time.&nbsp; So the variable name has to be stored where it can be found for program listing. The pointer to pointer is so that variables can be local. The pointer to the value is stored on the stack during the lifetime of the function or procedure.&nbsp; So you can see where my structures come from.
<br><br>Most, if not all BASICS lose their variable values whenever the program stops - Not so in BBasic - the program can be stopped, variables can be changed and the program continued provided you are not in a loop or function or procedure. - You can even change the program in certain circumstances.
<br><br>If the program is saved from within the running program the program will carry on the running state with all the variables intact when it is loaded.<br><br>Arrays can have any number of dimensions. There are Matrix operations Addition, Subtraction, Multiplication, Transpose, Determinant and Inverse. Built in search and sort routines.&nbsp; These are versatile and VERY fast.
<br><br>BBasic itself is only abo9ut 80K Bytes.<br><br>One of my users worked at the National Physics Laboratory preparing his programs in BBasic with the very short cycle time and ease of debugging and then translating it to Pascal.
<br><br>I have been asked to make this BASIC available to Linux as there does not appear to be any BASIC generally available.&nbsp; It will be issued under GPL (if I finish it)&nbsp; (:-<br><br>&nbsp;Cheers Dominic<br><br><br>