Liberty Basic is develeopped by Carl Gundel
Original Newsletter compiled by Alyce Watson and Brosco
Translation to HTML: Raymond Roumeas

The Liberty Basic Newsletter - Issue #69

MAR 2000

© 2000, Cliff Bros and Alyce Watson

All Rights Reserved


In this issue:

	
  1. Editorial comment
  2. Extract of chat with Carl Gundel about LB2
	Online transcript of much of the chat: http://alyce.50megs.com/sss/chat.html

1. EDITORIAL COMMENT

 

One of the subjects under discussion at the recent chat session was the advisability of crippling the shareware version of LB. Time limits and crippling of features were discussed.

Simply reserving the use of the runtime engine for registered users may not be enough. There are quite a few users who do not need to distribute their programs to the public -- they are for private, personal use only -- and as such, they do not require the runtime engine.

After some thought, this editor would like to suggest an alternative to either of these. I would not like to see the shareware version have a time limitation, because this is a programming language and it takes time to give it a proper work out. For the same reason, it might not be such a good idea to cripple it. All features should be available to the prospective registered user, or he cannot make an evaluation.

Instead, I would suggest a nag (or two.) I hate nags as much as, or more than the next person, but they allow a full trial for as long as necessary to make a proper evaluation, while giving the user a reminder to register.

Discussion?


The following is an extract of the transcript of the March 25th chat with Carl Gundel. Only substantive messages are included, and messages are grouped by threads for easier reading. Only messages from Carl are attributed. Please respond and continue these discussions!

Please feel free to continue the discussions from the chat here or on the message board at the Liberty BASIC Network:

http://www.liberty-basic.com

or on the community web:

http://www.libertybasic.com/CoWeb.178

A large portion of the chat was captured and is online:

http://alyce.50megs.com/sss/chat.html
 

KEY   CARL: Carl Gundel Q: Question A: Answer C: Comment
HELP CARL WITH VERSION 2.0  

Q: Carl, what can we folk do to help you get v2 ready?

CARL: I guess at this point it seems almost ready for real use. If people were to try and use it to write real software, that would get me the kind of feedback I need. Thanks for asking.


PRINT DIALOG  

Q. Will you be adding a print dialog, and how will it work?

CARL: I want to remove the current automatic display of a printer dialog. Then the programmer could pop one up if needed.

Q: If you have a printer dialog, would you return the printer DC, or maybe the number of copies chosen?

Q: Or have the printer info in a struct:

CARL: I was thinking of having a default struct defined that would contain printer info.

Q: I never really understood structs, what are they?

A: Think of structs as different variable types each holding some info that can be passed all at once.


DOCUMENTATION  

C: I hope to see "all" of the documentation, including the readme files included with all of the versions in the help file.


TYPES IN API CALLS  

Q: Carl, is there any way to change API calls so you don't have to use 'ptr,long,ushort,etc...'?

CARL: Chris, I cannot remove the type information. Windows requires this in order to make API calls. Sorry.


SPRITES  

CARL: Well, LB still doesn't do sprites. Rats.

C: Carl, I don't know of a language that has native sprite commands.

CARL: I think there are special versions of BASIC which do games and have sprites.


POINTERS  

C: AFAIK my ptr2long.dll is still needed to do some things.

Q: Brent, yes your ptr2long is a good one. Carl, can you add a feature that returns a long value to a pointer?

CARL: ... could you explain that one to me?

A: I found that getting info into an API call is easy enough but getting data back is more difficult.

CARL: Hmm. How does ptr2long help with that?

A: I tested my dll the other day to see what values my dll returns compared to what is help in ptr's and found the value is different each time.

CARL: Oh, so your DLL lets you get the pointed-to value instead of the pointer?

A: It's similar to QB's Varptr function I think.

CARL: I'll see if I can emulate that feature in a native LB function. That's pretty neat Brent. I didn't realize there was such a DLL.

A: The only problem is the Windows mem manager that keeps blocks of memory moving, especially after Windwos has been running for very long and the memory has become fragmented.

CARL: That can be a real problem.


FONT DIALOG  

Q: Carl, am I asking for the moon here... can you include a user's color choice in the font dialog?

CARL: Alyce, I'll give it a try.

Q: Alyce, why the color choice in the font dialog:

A: Doyle, it is the only choice the user can make that isn't available in the font dialog.


BUG IN DELETE  

Q: Carl, I forget, but in 1.41 highlighted and deleted text was copied to the clipboard, I can't remember if you fixed that in 2.0, just thought I should bring that to your attention...

CARL: ufonut, thanks for pointing that out.


BUTTONS IN THE DEBUGGER  

Q: Carl, please put the regular (not bitmap buttons) buttons back in the debugger! You cannot step very fast through the code!

CARL: I know how to fix that without getting rid of the bitmap buttons, I think. We'll see.


USING THE NEW DEBUGGER  

Q: I've been giving the debugger a workout. What will 'execute basic code in debug session' do?

CARL: That feature in the debugger will let the user execute BASIC statements agains the running debug session. This way you can change the value of variables for example, or goto some part of the code. The imagination soars!


COMMUNICATIONS SUPPORT  

Q: Has anyone made any progress with communication DLLs for LB? Carl that's the one major thing LB lacks. Maybe the ability to use Winsock?

Q: Winsock capability would be nice, any chance Carl?

Q: Any communications would be nice.

CARL: I really want to add the winsock stuff, but I think its going to wait until 32-bit.


32-BIT LIBERTY BASIC  

Q: Carl - you mentioned 32-bit. Is it really in our future?

CARL: Well, I spent a lot of money to get the 32-bit Smalltalk I need, so I sure hope so.

C: Out on a limb here, perhaps, but I don't want to see anything complicated go into v2.0 that isn't in there

already, so Carl can get on to 32-bit.

C: I agree with Alyce, go fo the 32 bit Carl!

C: I say after 2.0 go for the 32 bit.

C: Same here.

C: Cheers enthusiastically.

CARL: Well, there are a couple of small things I want to do with functions. I need to add the serial comm support back in, and the debugger isn't completely done. Anything else aside from bug fixes?

Q: Carl, to change LB to 32-bit do you have to rewrite all code?

CARL: I won't have to rewrite much code at all.


CALLBACKS

Q: I think it was Brent who mentioned functions and callbacks. Will they be in there?

CARL: I do want to add callbacks, but perhaps they should go first into the 32-bit version and then backported. What do you guys think?

Q's: What is backport, what is a callback?

A: Backport - get it to work in 32 bit, then go back to do it in 16 bit.

CARL: A callback is when a DLL or API function which is called by LB turns around and calls a function in the LB program itself.


ERROR IN API CALL IN ALPHA  

Q: When I make CreateWindow call I get an error saying "Missing Key"

CARL: Chris, is this using the alpha 5? "Key is missing" s a very general kind of Smalltalk error.

A: Chris, you might double check params. You might need as short instead of as word.

A: Carl, yes it is, but what Alyce said helped me fix it.


BYTE  

Q: Carl, could you add a Byte type to CallDll? Some API's require a byte parameter and char[1] doesn't work.

C: YES, a byte! Good one!

CARL: BYTE, Gotcha!


PRICE OF LIBERTY BASIC?  

C: You'd better charge more $$$ for the 32-bit, Carl... LB is a steal as it is.

CARL: How much is 32-bit LB worth? I'm not sure I should change the price.

A: Carl 3xs my life savings.

A: If you keep the 16-bit version running at the same time, then definitely some sort of additional premium.

A: Carl, 32-bit GFA BASIC is $1000.

CARL: Wow! When did GFA BASIC start costing that much?

A: I think the thousand is for 32-bit. 16-bit GFA is still $400.

A: GFA is priced way over my head! Even the 16 bitter.

Q: How much does, say, VB go for?

C: Drake, BV runs about $500-600, but I got it for 45$.

CARL: Would people pay say, $69.95?

A: I'd say between $50-70

A: $59.99

A: I would Carl. I think its a great deal!

A: 69.65 sounds entirely reasonable. You do not cripple or time limit it, so people can use it as long as they want to evaluate.

Q: Would people who already registered have to pay the same amount for the 32-bit version as someone who hasn't registered the 16 bit one?

CARL: Chris no of course not. :-)


CRIPPLING LIBERTY BASIC SHAREWARE?  

CARL: Do people think I should experiment with a time limit on the trial? <ducking from thrown objects!>

A: I don't think so.

A: Carl, GFA trial is limited to 1000 lines. Something of that nature might be better than a time limit.

CARL: Alyce, that's an idea.

C: Sure, enough to give them a taste, but not too much!

C: Or, how about no ability to make or run tkns in unregistered version? Just thinking..

C: I like that idea better than limit on lines

C: Carl, but wait I have an opposition. Mr. Jo blow comes and converts his 2000 line QBASIC program to a 1500 line in LB, how is he going to see how LB stands up to QB in the trial? He can't because it's limited to 1000 lines.

C: 1500 lines? heck he could do it in 200 easy!

C: You could get around such a limit by making longer lines.

C: Keep in mind that what makes people pay a premium for a programming languge is when they see what others have created... It's up to us to help Carl make a reasonable profit. The language is simply a means to an end.

CARL: The unregistered version doesn't permit use of the runtime engine. I thought that was a useful restriction (from a registration incentive perspective).

A: Carl, it IS, but since not may of us distribute to the public, it isn't too much of a restriction.

CARL: Good point Alyce.

A: I believe you are losing out on people who are just interested in doing projects of their own. It allows unlimited access for self.

C: So Carl, what about a 30 day time limit on the unregistered LB?

C: Time limits are difficult to enforce in 16-bit without the Registry to hide things.

C: Or else to stop certain functions working after 30 days, e.g., DLL calls?

C: Some things that don't work. I still use a copy of webimage that I just roll back the calendar. I have an old copy of Cool Edit that allows on and off features, but are still usable.

C: Yes, time limits are a pain. Maybe crippling features is the answer.

C: What about using a file in the WINDOWS\SYSTEM directory to determine how long LB has been used? There are so many files there that no-one would be able to find it? It would need to check that the current date isn't less than the last date the programme was used, i.e., the computer date hasn't been turned back.

C: If you put a file in windows\system it would still be easy to find it, put a random entry in the registry.


PROMOTING LIBERTY BASIC  

CARL: You guys are so helpful in promoting LB, but how can we get more bang from our promoting effort? Maybe someone here could write enthusiastic letters to the editor(s) of a big trade rag? I know I could write them myself, but I imagine it would be more convincing from real users.

C: Ian has asked site masters to submit urls to him, and he will submit to the search engines. That should do something!

CARL: Thanks Ian!

C: My friend is the owner of www.all4webmasters.com and he brags about getting a lot of hits to his site at school, I could bribe him into putting an ad in his newsletter or somewhere else for LB.

Q: Carl would it help for everyone to put LB's URL in their email sigs?

Q: What is your promotion company doing to promote, Carl?

CARL: That promotion company did quite a lot, but they do it when I have a new release. When LB2 comes out, they'll push it on the search engines, send out press releases, upload it to shareware sitesd, and make appropriate USENET posts.


A LIBERTY BASIC MASCOT?  

CARL: Is anyone here an artist? Who wants to create an LB mascot? Answers: dinosaur, wolf, alien, tiger, some volunteers to do graphic design

C: Carl, perhaps you could have a competition to design a mascot?

C: Ian, that's a good idea!

C: Maybe win a registered copy of LB?

CARL: That's a terrific idea, because it means that we are allowed to post a message about the contest to any art related newsgroup!

C: Have you seen how Hot Dog Pro opens with the 3d dog and woof sound. catches your eyes and ears.

C: Carl, I've always thought because of the name Liberty BASIC that you were going towards a flag or your torch.

CARL: Somebody should start a regular Liberty BASIC cartoon strip!

C: Yes, statue, flag, torch they all spell one thing. Captain America!!

Q: So would you like the torch as the logo?

C: Carl I do think that staying with the torch is good. It is well known in some circles.

C: Carl, I often wondered if Liberty BASIC would fit in more with the other BASIC's if it were perhaps LBASIC

CARL: I've imagined a stylized torch with arms and legs. A face high up on the handle, and the flame would do different things to express feeling! Remember the flute in HR Puffinstuff?

C: Carl, you could make a little animated guy giving tips, like MSWord, the paper clip guy!

CARL: I've noticed that some people really hate that paper clip.

C: I hate the annoying little --- I think maybe something at the beginning and the end. Like how windows opens and closes.

C: How about a bell with a crack?

CARL: The torch could carry a miniature version of itself around and light itself back up if it goes out. ;-) Then we would need an arch enemy of the torch. VB, the blow torch?


WHEN WILL THE BETA BE RELEASED?

Q: Now for the big question... when do you think version 2 will go to beta?

CARL: Liberty BASIC will go to beta as soon as I can get the serial communications support working. I still haven't added the spreadsheet in. Do people want this?

A: I think the spreadsheet is really cool. What I hear is that people feel there is too much of a limit in size.


DISTRIBUTION FILES  

Q: Would there be any way to put all the distribution dlls into a single dll? Like VB?

C: I don't think VB does that.

CARL: Unfortunately using the Smalltalk I do, I really cannot do that. At least not as far as I can imagine. The 32-bit Smalltalk does have fewer DLLs though.


SPLASH BITMAP  

Q: OK. Can you change the filename of the startup image?

CARL: You mean from VSTUB?

Q: I mean the splash screen bitmap...

CARL: You mean make your own starup splash screen? You can do that already.

C: I was thinking more along the lines of changing the file extension to something which doesn't look like a graphic. As Alyce was mentioning in a past newsletter. Maybe it would look more "professional" (though maybe I'm being a bit picky here).


ON ERROR  

Q: Is there any chance of going to an error routine instead of having the program crash?

CARL: That's also something I wanted to add to LB2. Maybe I can still do it.

C: Carl, again, only if you can do it easily. I'm looking forward to 32 bit.

C: That would be nice cause you can foresee lots of errors and fix them and keep on trucking.

CARL: It would be much easier in the 32-bit version.

C: Carl that would be nice but shoot for 32 bit if it's a problem.

C: Yes, some sort of error catching would be great. Especially to catch the VSTUB errors.

CARL: VSTUB errors are general protection faults. I don't think those are going to get caught. Do you see a lot of those? I don't.

Q: Are there VSTUB errors because of LB being 16 bit or will they also appear in the 32 bit version?

C: I don't see a lot either, but knowing I could deal with them when they happen would be great.

C: For some of the programmes I wrote, they are th limiting factor. Programmes with lots of loops and number calculations seem to fail with this error after a while.

CARL: In the 32-bit version they are called general protection faults (sometimes non-continuable protection violations). I'm sure that you will still see those sometimes.

C: If a program is made correctly it will not crash.

C: It's still Windows after all! :)

CARL: These are definitely prone to happen when playing with APIs and DLLs.

C: I had the feeling with LB that running the programme gradually decreases the system resources until a VSTUB error happens.

C: VSTUBs are usually from the wrong types in the CallDll. If you could predeclare these, then you wouldn't have to worrry about it with every call and the compiler could catch it.

CARL: Well, I cannot fix bugs in the Smalltalk virtual machine. If there are bugs (and every complex software program has bugs), you will see their effect. :-(

C: But the VSTUB errors I see mainly happen after the programme has already been running for 20 or 30 minutes.

C: It could be your routines.

C: I understand that, Carl. I was just wondering whether a 32 bit version would be inherently better in this regard?

CARL: Some VSTUB errors may be caused by diminished memory and resources as you say. Some of these problems will probably diminish somewhat wtih the 32-bit version, and hopefully somewhat with the new 16-bit LB2.

C: Maybe it is because of my routines but I don't know how to optimise the code and reduce the chances of this happening.

CARL: Some of these things are caused by bugs in my code (or design oversights on my part). Likely I will discover some of these problems as I go and fix them.

C: One point I noticed is that, sometimes if we DIM a large array at the start of a programme, LB refuses to run until the computer is reset. But if we DIM a small array and then REDIM the array to the larger size later in the code, then it does run.

CARL: Interesting observation Ian. I'll look into that.

 

MENU PAUSE  

C: Carl, could you make it that the program doesn't stop while a menu is open?

CARL: I'm not sure, but I think that 16-bit Windows causes the pause while menus are displayed. I'm not sure though.

C: Well Carl, I wasn't blaming you. If I had 10% of your programming skills I'd consider myself very lucky.


FUNCTIONS AS EVENT HANDLERS  

Q: Carl, is it possible to use function names in things like trapclose, etc?

CARL: Function names as even handlers would be a 32-bit feature.


POPUPMENU POSITION

C: Hey all. I spoke to Carl about this and we have different preferences. I prefer to have a popup show upperleft corner where the mouse is and Carl likes the mouse to be mid-menu. Votes?

C: Upperleft corner seems more natural to me.

C: From the top seems right to me.

C: And in 98 they grow from that corner.

 

PORT TO LINUX?  

CARL: What do people think about Linux as an LB platform? The problem with a Linux version is that it wouldn't be such an easy port. There isn't any Smalltalk for Linux which has similar class libraries. ON the other hand, I think that porting to Linux would mke a Mac version possible.

C: That would probably help you a lot, Carl. I have noticed several news posters complain about basic on the macs.

C: Especially with LiMac a reality.


LIBERTY BASIC FOR KIDS?  

CARL: What do people think aobut a version of Liberty BASIC just for kids?

A: Sort of a "Logo" type thing? Or what?

CARL: I guess I would need to compete with Logo. Maybe I shouldn't bother?

C: I don't know how popular logo is. I've never used it. Just read about it.

C: MS Logo is free and supports 3D turtle graphics.


Brosco and Alyce have written a Book for Liberty BASIC, which is available in electronic form on a CDROM. For details: http://alyce.50megs.com/sss/cd.htm
Newsletter compiled and edited by: Brosco and Alyce. Comments, requests or corrections: Hit 'REPLY' now! mailto:brosco@o... or mailto:awatson@w...