LB Booster
General >> Announcements >> LB Booster version 3.00 released
http://lbb.conforums.com/index.cgi?board=announcements&action=display&num=1425213670

LB Booster version 3.00 released
Post by Richard Russell on Mar 1st, 2015, 11:41am

I am pleased to announce the release of LB Booster version 3.00. It may be downloaded from here:

http://lbbooster.com/LBB.exe (IDE/compiler)
http://lbbooster.com/LBBRUN.exe (optional runtime engine)

You will need administrative privileges when running the program for the first time after upgrading (in Windows Vista, 7 and 8/8.1, with UAC enabled, use 'Run as administrator').

Changes in this version include:
    Extensions to the Liberty BASIC language:

  1. Object Oriented Programming (OOP): Classes, Objects, Properties, Methods, Constructors, Destructors, Inheritance, Containment etc!

  2. Structured Exception Handling (SEH): TRY, CATCH, END TRY & THROW.

  3. Compound assignment operators (+=. -=, *=, /=).

  4. Array elements may be passed to functions and subs By Reference.

  5. The RUN statement has an option to wait until the program exits.

  6. The graphics PRINT command has an option to suppress the dump.

  7. You can paste into the mainwin INPUT statement using Ctrl+V.

    Compatibility Improvements:

  8. LPRINT word-wraps at the end of a line.

  9. If you enter a very long line in response to INPUT, the mainwin scrolls automatically to keep the caret visible.

    Enhancements to the Integrated Development Environment (IDE):

  10. Syntax coloring, with customizable colors!

  11. File... Compare... shows differences from a previous version.

  12. File... Insert... inserts a file at the current caret position.

  13. Edit... Go To... (Ctrl+G) jumps to a specified line number.

  14. Edit... Find... supports Up/Down and Find Previous (Shift+F3).

  15. The Find/Replace dialogs are initialised with any selected text.

  16. The Status Bar shows Encoding, Overtype, Capslock, Numlock states.

  17. The NOMAINWIN statement is ignored when run in Debug mode.
Richard.

Re: LB Booster version 3.00 released
Post by JosephE on Mar 1st, 2015, 5:22pm

This is absolutely amazing. I'm doing a project in LBB right now, so I'm going to try and take advantage of these new features and let you know how it goes.

Can't wait to try it!
Re: LB Booster version 3.00 released
Post by tsh73 on Mar 1st, 2015, 5:36pm

New features sound great. Juts got some problem trying:
Problems with syntax coloring
Left: syntax coloring is off. Right: syntax coloring is on
User Image

Font set to Courier New, but with coloring off font looks like arial (or something like that)
And with coloring on - font looks like Courier but spacing is definitely off.

(I'm on XP Home SP3)

Re: LB Booster version 3.00 released
Post by JosephE on Mar 1st, 2015, 5:42pm

Are arrays inside classes local?
Re: LB Booster version 3.00 released
Post by Richard Russell on Mar 1st, 2015, 5:51pm

on Mar 1st, 2015, 5:36pm, tsh73 wrote:
Font set to Courier New, but with coloring off font looks like arial (or something like that)

That's the fault! If the native Richedit control isn't recognising the font selection with the colouring off there's no way it is going to work with the colouring on! I can't say what the problem is, but it must be specific to your system (works fine with Courier New and XP SP3 here).

I should have said, but I'll say it now: if the Syntax Colouring doesn't work just switch it off; you are no worse off than you were before. It's a bonus feature for those for whom it works properly. If you're unlucky and it doesn't work, there is nothing I can do about it. Sorry.

Richard.

Re: LB Booster version 3.00 released
Post by Richard Russell on Mar 1st, 2015, 5:55pm

on Mar 1st, 2015, 5:42pm, JosephE wrote:
Are arrays inside classes local?

This is what it says in the docs: "Unlike conventional arrays, class property arrays are not global.".

Richard.

Re: LB Booster version 3.00 released
Post by JosephE on Mar 1st, 2015, 6:02pm

Thank you, I missed that. I've been referencing your documentation while I rewrite my code around the new OOP features.

Is this good practice?

Code:
global MAXSIZE
MAXSIZE = 10

class myClass
  dim array(MAXSIZE)
end class
 

Re: LB Booster version 3.00 released
Post by Richard Russell on Mar 1st, 2015, 6:22pm

on Mar 1st, 2015, 6:02pm, JosephE wrote:
Is this good practice?
Code:
global MAXSIZE
MAXSIZE = 10

class myClass
  dim array(MAXSIZE)
end class 

Using a global you mean? I can't see anything wrong with it.

Depending on the extent to which people play with OOP, I expect there will be requests to add more features (I know Bluatigro would like to be able to pass objects as parameters!). We will have to see how we go.

Richard.
Re: LB Booster version 3.00 released
Post by JosephE on Mar 1st, 2015, 6:32pm

Passing and returning objects from functions would be brilliant, if you ever get around to it wink
Re: LB Booster version 3.00 released
Post by Richard Russell on Mar 1st, 2015, 6:43pm

on Mar 1st, 2015, 6:32pm, JosephE wrote:
Passing and returning objects from functions would be brilliant, if you ever get around to it wink

The challenge is to devise a syntax that is compatible with the rest of Liberty BASIC; it's tricky to bolt-on that kind of feature without breaking existing programs. Any suggestions would be welcome!

Is the Syntax Colouring working for you?

Richard.
Re: LB Booster version 3.00 released
Post by JosephE on Mar 1st, 2015, 7:53pm

The syntax coloring is working great! (Windows 8.1, brand new custom built computer)

What about something like this (reminiscent of VB)?

Code:
function myFunction(parameter as MyObject, number, string$) as MyObject
  myFunction = new MyObject ' or a reference to an object instance in another variable
end function 

Re: LB Booster version 3.00 released
Post by tsh73 on Mar 1st, 2015, 7:55pm

Just for a record, it looks like syntax coloring for me works with
any font I tried (gave up after 10) but Courier or Courier new.
So I set it to Lucida Console.

Re: LB Booster version 3.00 released
Post by Alincon on Mar 1st, 2015, 8:34pm

Gee, I'm not used to developers delivering products on time.
These are significant improvements, indeed.

About downloading and installing: should I remove v2.80 before downloading 3.0, or will 3.0 overlay 2.80?

r.m.
Re: LB Booster version 3.00 released
Post by JosephE on Mar 1st, 2015, 8:46pm

on Mar 1st, 2015, 8:34pm, Alincon wrote:
About downloading and installing: should I remove v2.80 before downloading 3.0, or will 3.0 overlay 2.80?


You're pretty much just downloading an executable, so you can rename your previous version and dump the new one in the same place. I haven't found any significant bugs in 3.0 yet, but I'm hanging onto 2.8 just in case.
Re: LB Booster version 3.00 released
Post by Richey on Mar 1st, 2015, 9:26pm

on Mar 1st, 2015, 11:41am, Richard Russell wrote:
I am pleased to announce the release of LB Booster version 3.00.


Richard, this is superb - but those of us who are also BBC BASIC for Windows users have come to expect no less. This new version also allows me the chance to experiment with OOP using BASIC, which is brilliant and the syntax colouring means even less need to revert back to the original LB IDE. Congratulations and many thanks for your continued efforts on this.

Re: LB Booster version 3.00 released
Post by Richard Russell on Mar 1st, 2015, 9:58pm

on Mar 1st, 2015, 7:53pm, JosephE wrote:
What about something like this (reminiscent of VB)?
Code:
function myFunction(parameter as MyObject) 

What do you expect to be able to do with the object once you've got it into the function? Given the OOP model I've adopted for LBB all you could do is call its methods:

Code:
call parameter::method
lvar = parameter::method() 

Can you give an example of how you think such a facility might actually be used in practice?

Richard.

Re: LB Booster version 3.00 released
Post by James on Mar 2nd, 2015, 05:57am

Thanks Mr. Russel for this and everything!! cheesy
Re: LB Booster version 3.00 released
Post by terciops on Mar 2nd, 2015, 09:18am

Richard,
what a star you are. This new release runs me short on superlatives. I love the IDE colouring and the OOP is sending shivers down me timbers....

Now if someone would come up with include files with some good old fashioned SQLITE and JSON handling we could set the PC world alight with this 'new' BASIC.

Well done, and I am very glad that you didn't feel the need to set aside your keyboard and abandon LBB as it looked like you might last year. The coding world would have been much the poorer had that happened.

Ken
cheesy
Re: LB Booster version 3.00 released
Post by flotulopex on Mar 6th, 2015, 3:24pm

Thanks a lot again smiley
Re: LB Booster version 3.00 released
Post by Alincon on Mar 6th, 2015, 3:38pm

"Now if someone would come up with include files ..."

Did you miss the include statement:

!include fileName$

r.m.
Re: LB Booster version 3.00 released
Post by Richard Russell on Apr 11th, 2015, 5:55pm

User 'michael' has posted at the LB Community forum: "I like Liberty Basic and would like to push its limits. The one thing I am working on is making special functions that would make liberty basic have Object Orientated abilities". Will somebody kindly reply with a link to this thread, or alternatively a link to the LBB help here (as permitted by Alyce):

http://www.lbbooster.com/lbb.html#oop

Richard.
Re: LB Booster version 3.00 released
Post by Richey on Apr 11th, 2015, 9:07pm

on Apr 11th, 2015, 5:55pm, Richard Russell wrote:
User 'michael' has posted at the LB Community forum: "I like Liberty Basic and would like to push its limits. The one thing I am working on is making special functions that would make liberty basic have Object Orientated abilities". Will somebody kindly reply with a link to this thread, or alternatively a link to the LBB help here (as permitted by Alyce):

http://www.lbbooster.com/lbb.html#oop

Richard.


Hi Richard.
Link to this thread posted onto the LB Community Forum.

Re: LB Booster version 3.00 released
Post by Richard Russell on Apr 11th, 2015, 10:25pm

on Apr 11th, 2015, 9:07pm, Richey wrote:
Link to this thread posted onto the LB Community Forum.

Many thanks, but I understand it was immediately deleted. angry

Richard.
Re: LB Booster version 3.00 released
Post by RNBW on Apr 12th, 2015, 6:55pm

on Apr 11th, 2015, 10:25pm, Richard Russell wrote:
Many thanks, but I understand it was immediately deleted. angry

Richard.


Couldn't find the link, so it looks as though it has been deleted. angry
Re: LB Booster version 3.00 released
Post by tsh73 on Apr 13th, 2015, 07:23am

Please don't fret over it.
The reason stated was along lines "LBB is great, LBB having OOP is great, but mentioning LBB in the "Liberty Basic Testimonials" is wrong place".
(wording is mine)
User got a PM.

Re: LB Booster version 3.00 released
Post by datwill on Apr 21st, 2015, 2:55pm

THIS IS AMAZING AND CAN'T WAIT TO READ UP THE ADDITIONAL FEATURES! I've heard; though; that you're bailing out of LBB shocked shocked embarassed embarassed IS THIS T...TRUE?!
Re: LB Booster version 3.00 released
Post by Richard Russell on Apr 21st, 2015, 4:18pm

on Apr 21st, 2015, 2:55pm, Daniel Atwill wrote:
I've heard; though; that you're bailing out of LBB shocked shocked embarassed embarassed IS THIS T...TRUE?!

Yes. Being banned from the LB Community Forum was the final straw. I've now removed LBB from my products page and announced that it's discontinued.

Having said that, I don't intend to take down the LBB webpage or download, and I expect this forum to remain, at least while there are still a few users out there.

Since I am no longer monitoring this forum regularly I would welcome volunteers to be moderators, to look after day-to-day admin such as deleting spam posts or moving threads to a more appropriate place. If anybody is interested, email me.

Richard.
Re: LB Booster version 3.00 released
Post by datwill on Apr 21st, 2015, 7:07pm

on Apr 21st, 2015, 4:18pm, Richard Russell wrote:
Being banned from the LB Community Forum was the final straw.

Why where you? I don't see why you should be!
Re: LB Booster version 3.00 released
Post by SarmedNafi on Apr 23rd, 2015, 03:43am

Quote:
Being banned from the LB Community Forum was the final straw.



What straw you talking about? In Arabia they said "The straw which brakes down the camel back" smiley

If I found a bug or something not works as expected, what should I do?
I did found something like that. sad
You asking me to wound LBB down. angry
Re: LB Booster version 3.00 released
Post by SarmedNafi on Apr 23rd, 2015, 04:20am

Quote:
"Liberty Basic Testimonials" is wrong place".


Yes,
That must be realized from the beginning, Richard lived in London, if he lived let me say in Baghdad, their could be some tolerance. But with a copyright belongs to a person from US, well, whey they create the copyrights low then?
It is not like Wine on Linux, Wine is very poor, can't support RTL languages, graphics ability is very limited, and many other points.
I know, Richard has a sharp brain like spark, he can't switch off his mind. He is a creator.
But I confused I don't know what to say and what he should do. This is the worst conflict I ever seen.
Since many days because of this I was very upset, I said to myself we have to ask the very old men like Gordon Sweet (he is in the age of my father if my father was still a life). Saying to myself look Gordon, help us, have you ever seen such conflicts, what should Richard do? ? ?
I think Richard don't need to cut his head a way or switch off himself.
The powerful thing we have these days is the micro controllers and Arduino as well, so a translators from LBB to the languages of these micro controllers will be great, I my self I will pay for such translator.

All the best to Richard T. Russell
Sarmed, Baghdad, IRAQ
Re: LB Booster version 3.00 released
Post by datwill on Apr 23rd, 2015, 08:47am

I still don't understand why Richard should be banned from the forum. Was it because he advertised LBB there? Or where the people at the forum getting jealous so they decided to kick him off just for the sake of it?
Either way, I think Richard should be careful about what he's doing. If he is the creative type, I don't think he should suddenly cut himself from his own project like this. Being banned from a forum shouldn't stop him from being even more creative and awesome! Maybe he's got another, even GREATER secret project he's working on, and so stopping LBB development to concentrate on his new project! Let's just wait and see! wink wink wink
Re: LB Booster version 3.00 released
Post by CirothUngol on May 14th, 2015, 01:44am

on Apr 23rd, 2015, 03:43am, SarmedNafi wrote:
If I found a bug or something not works as expected, what should I do?

The exact same thing you'd do if you came across a similar issue with LB 4.x, find a way to code around it. If that fails, share it here on the LBB forums; the community is usually both willing and able to help with your problem.

As I've said before, LB Booster 3.0 is already complete and functioning software. There are no bugs to speak of and it currently provides more stability and useability than Liberty Basic 4.x. I spent years learning how to code around the bugs and limitations of Just/Liberty Basic, which is much longer than it's taken to get used to the many perks of a LB Booster + LB Workshop setup.

Thanx again, Richard. You've provided the Liberty Basic community with a superior alternative for our favorite BASIC dialect. It's all there, and with more Bells & Whistles than we could ask for. I only hope that you'll consider addressing any compatibility issues that may arise with Windows 10 so that we may continue to use LB Booster for years to come. Even better, release the source code under public license so that the community can maintain it themselves.
Now THAT would surely entice a few members to learn BB4W, present company included. ^_^
Re: LB Booster version 3.00 released
Post by Richard Russell on May 14th, 2015, 09:06am

on May 14th, 2015, 01:44am, CirothUngol wrote:
I only hope that you'll consider addressing any compatibility issues that may arise with Windows 10

I don't expect there to be any, and anyway executables compiled using LBB v3.00 already contain a Windows 10 compatibility manifest!

Quote:
Even better, release the source code under public license so that the community can maintain it themselves.

I have had mixed reactions to that idea:

on May 3rd, 2015, 6:02pm, Alincon wrote:
I don't think LBB IDE source code should be released to public domain. Some idiots will make minor changes, or no changes, and try to sell it. Inevitably some users will blame Richard for corrupted versions of his very fine work.

So what can I do which will keep everybody (or at least most people) happy?

Richard.

Re: LB Booster version 3.00 released
Post by Mystic on May 14th, 2015, 9:38pm

on May 14th, 2015, 09:06am, Richard Russell wrote:
So what can I do which will keep everybody (or at least most people) happy?



Continue to be our fearless leader! wink
Re: LB Booster version 3.00 released
Post by tsh73 on May 15th, 2015, 05:50am

>> >> Some idiots will (...)
>> So what can I do which will keep everybody (or at least most people) happy?

Ignore the idiots.
Re: LB Booster version 3.00 released
Post by bluatigro on Jun 26th, 2015, 11:21am

LBB is now starting to be a good tool

i have [ some ] ideas for inprovement

[ see REM in next listning ]

Code:
class complex
''mr and mi are private now
''shoot be a choice able for public
  dim mr , mi
''default parameters are nice to
''sub complex a = 0 , b = 0
  sub complex
    mr = 0
    mi = 0
  end sub
  sub complex a , b   
    mr = a
    mi = b
  end sub
''if mr and mi are public
''these two functions are not nesery
  function r()
    r = mr
  end function 
  function i()
    i = mi
  end function

''THIS is what i want to do :

''  function add( in as complex ) as complex
''    add = new complex this::mr + in::mr _
''    , this::mi + in::mi
''  end function

''or even better :

''  operator +=( in as complex ) as complex
''    return complex this::mr + in::mr _
''    , this::mi + in::mi
''  end operator

end class  
 

this is nice to :
Code:
dim a() = { 0,1,2,3,4,5 }
''and
dim m(,) ={{0,1},{2,3}}
 

Re: LB Booster version 3.00 released
Post by Richard Russell on Jul 6th, 2015, 06:59am

on Jun 26th, 2015, 11:21am, bluatigro wrote:
this is nice to :
Code:
dim a() = { 0,1,2,3,4,5 }
''and
dim m(,) ={{0,1},{2,3}} 

If you don't mind using the BBC BASIC 'escape' feature you can do:

Code:
    dim a(5)
    !a() = 0,1,2,3,4,5

    dim m(1,1)
    !m() = 0,1,2,3 

Richard.

Re: LB Booster version 3.00 released
Post by bluatigro on Jul 24th, 2015, 08:53am


it is already posible to do OOP
but it is slow Code:
''first we create some objects
obj1$ = v3d$( 1 , 2 , 3 )
obj2$ = v3d$( 4 , 5 , 6 )
''then we print them
print "vectors :"
print " a = " ; obj1$ 
print " b = " ; obj2$
''then we do some OOP math
print "adding :"
print "a + b = " ; addv3d$( obj1$ , obj2$ )
print "subtracting :"
print "a - b = " ; subv3d$( obj1$ , obj2$ )
print "lenght :
print "| a | = " ; lenghtv3d( obj1$ )
print "| b | = " ; lenghtv3d( obj2$ )

end
''special class functions
function v3d$( x , y , z )
''constructor of a v3d object$
  v3d$ = str$( x ) + " " + str$( y ) + " " + str$( z )
end function
function xv3d( a$ )
''property
  xv3d = val( word$( a$ , 1 ) )
end function
function yv3d( a$ )
''property
  yv3d = val( word$( a$ , 2 ) )
end function
function zv3d( a$ )
''property
  zv3d = val( word$( a$ , 3 ) )
end function
function addv3d$( a$ , b$ )
''first get property's
  ax = xv3d( a$ )
  ay = yv3d( a$ )
  az = zv3d( a$ )
  bx = xv3d( b$ )
  by = yv3d( b$ )
  bz = zv3d( b$ )
''use constructor to get new object$
  addv3d$ = v3d$( ax + bx , ay + by , az + bz )
end function
function subv3d$( a$ , b$ )
''first get property's
  ax = xv3d( a$ )
  ay = yv3d( a$ )
  az = zv3d( a$ )
  bx = xv3d( b$ )
  by = yv3d( b$ )
  bz = zv3d( b$ )
''use constructor to get new object$
  subv3d$ = v3d$( ax - bx , ay - by , az - bz )
end function
function lenghtv3d( a$ )
  x = val( word$( a$ , 1 ) )
  y = val( word$( a$ , 2 ) )
  z = val( word$( a$ , 3 ) )
  lenghtv3d = sqr( x ^ 2 + y ^ 2 + z ^ 2 )
end function
''genaral class functions
''these work slow
''so i dont think of using them
''NOT TESTED JET
function setprop$( clas$ , object$ , prop$ , val$ )
  pointer = 0
  out$ = ""
  while pointer < 20 _
  and word$( clas$ , pointer ) <> prop$ 
    if word$( clas$ , pointer ) = prop$ then
      out$ = out$ + " " + val$
    else
      out$ = out$ + " " + word$( object$ , pointer )
    end if
    pointer = pointer + 1
  wend
  setprop$ = out$
end function
function getprop$( clas$ , object$ , prop$ )
  pointer = 0
  out$ = "error"
  while pointer < 20 _
  and word$( clas$ , pointer ) <> prop$ 
    if word$( clas$ , pointer ) = prop$ then
      out$ = word$( object$ , pointer )
    end if
    pointer = pointer + 1
  wend
  setprop$ = out$
end function
 

Re: LB Booster version 3.00 released
Post by bluatigro on Jul 24th, 2015, 09:24am


update :
- i tryed my general OOP

error :
- its not wat i expected

Code:
''first we create some objects
obj1$ = v3d$( 1 , 2 , 3 )
obj2$ = v3d$( 4 , 5 , 6 )
''then we print them
print "vectors :"
print " a = " ; obj1$ 
print " b = " ; obj2$
''then we do some OOP math
print "adding :"
print "a + b = " ; addv3d$( obj1$ , obj2$ )
print "subtracting :"
print "a - b = " ; subv3d$( obj1$ , obj2$ )
print "lenght :"
print "| a | = " ; lenghtv3d( obj1$ )
print "| b | = " ; lenghtv3d( obj2$ )
clas$ = "x y z"
print "general OOP test"
print "class = " ; clas$
object$ = v3d$( 1 , 2 , 3 )
print "v3d$ = " ; object$
object$ = setprop$( clas$ , object$ , "x" , "77" )
print "v3d.x = 77 = " ; object$
property$ = getprop$( clas$ , object$ , "z" )
print "v3d.z = " ; property$ 
end
''special class functions
function v3d$( x , y , z )
''constructor of a v3d object$
  v3d$ = str$( x ) + " " + str$( y ) + " " + str$( z )
end function
function xv3d( a$ )
''property
  xv3d = val( word$( a$ , 1 ) )
end function
function yv3d( a$ )
''property
  yv3d = val( word$( a$ , 2 ) )
end function
function zv3d( a$ )
''property
  zv3d = val( word$( a$ , 3 ) )
end function
function addv3d$( a$ , b$ )
''first get property's
  ax = xv3d( a$ )
  ay = yv3d( a$ )
  az = zv3d( a$ )
  bx = xv3d( b$ )
  by = yv3d( b$ )
  bz = zv3d( b$ )
''use constructor to get new object$
  addv3d$ = v3d$( ax + bx , ay + by , az + bz )
end function
function subv3d$( a$ , b$ )
''first get property's
  ax = xv3d( a$ )
  ay = yv3d( a$ )
  az = zv3d( a$ )
  bx = xv3d( b$ )
  by = yv3d( b$ )
  bz = zv3d( b$ )
''use constructor to get new object$
  subv3d$ = v3d$( ax - bx , ay - by , az - bz )
end function
function lenghtv3d( a$ )
  x = val( word$( a$ , 1 ) )
  y = val( word$( a$ , 2 ) )
  z = val( word$( a$ , 3 ) )
  lenghtv3d = sqr( x ^ 2 + y ^ 2 + z ^ 2 )
end function
''genaral class functions
''these work slow
''so i dont think of using them
function setprop$( clas$ , object$ , prop$ , val$ )
  pointer = 0
  out$ = ""
  while pointer < 20 _
  and word$( clas$ , pointer ) <> prop$ _
  and word$( clas$ , pointer ) <> ""
    if word$( clas$ , pointer ) = prop$ then
      out$ = out$ + " " + val$
    else
      out$ = out$ + " " + word$( object$ , pointer )
    end if
    pointer = pointer + 1
  wend
  setprop$ = out$
end function
function getprop$( clas$ , object$ , prop$ )
  pointer = 0
  out$ = "error"
  while pointer < 20 _
  and word$( clas$ , pointer ) <> prop$ _
  and word$( clas$ , pointer ) <> ""
    if word$( clas$ , pointer ) = prop$ then
      out$ = word$( object$ , pointer )
    end if
    pointer = pointer + 1
  wend
  getprop$ = out$
end function