I will shortly start working on Ebasic V2.
Consider this the wish list for features, changes, or anything you would like to see in future releases.
So if you have request - post them here.
I will evaluate each one and see where I can fit it in if possible.
Larry
i'd like to see a command built in to do similar to this.
http://www.purebasic.fr/english/viewtopic.php?f=16&t=30657&hilit=sfxr
which is based on this
http://www.drpetter.se/project_sfxr.html
http://code.google.com/p/sfxr/
its what i've been waiting for for years ..
their base project generates the.wav file. but someone in Purebasic has done it so that it can be used directly in the program to generate and play the sound effects directly without having to generate a .wav file
I'd really like to see an expansion of the ftp/sftp capabilities that Paul started on with his network pack. I do a LOT of ftp work and being able to do it in EB would be marvelous ... ;)
A way to disable/enable different command paks would come in handy....
Defenatly missing REDEF or REDIM command especialy for arrays.
Many other basic languages have this command....
Mac support?
j/k
Truly Unicode Friendly please (can edit unicode directly in the editor and outputs correctly in compiled program)
I second Mac OSX support.
Some suggestions :
- .NET support
- x64 code output + x64 assembler ( a newer version of NASM should do the trick i guess)
- integrate the Visual Designer (i'm sure the two Larry's can get to terms ?)
- separately : rewrite the package so it depends less on OS specific stuff...so in the future it becomes possible to have multiplatform support (and i am very much aware this is long term thinking..)
Q. : are you also switching to newer versions of the C/C++ compiler used ?
Regards,
Frank
A database grid control would be great, Paul once mentioned he had one in the works.
XP theme + version infos + icon setting into the executable are good additions ....
I wish to request a few points added to Emergence BASIC for backward compatibility with antic QB programs.
Primarily, I'd like to see elementary console-emulating functions within immediate reach in Windows exe mode.
As you know, ancient programs mostly comprise of functions like Locate, Print, Color (in QB-like 16 colors),
and, Inkey$ for user-interaction. :D
Such functions are more or less emulated in console exe mode, But, when exported to Windows, they are
not supported I suspect. You'd make my life comfortable with console-emulating functions for self-compatibility. ;)
Among my tools, GFA Basic (32bit) and Power BASIC Windows have such functions. Well, they lack console.
Secondly, I wish Emergence BASIC could accept array parentheses. Conversion is not self-evident over here.
Above notion to make Emergence BASIC more relics-friendly are based upon information as far as I know.
PowerBASIC-like workaround functions are just to clarify my above contentions. No usefulness is warranted. ;)
' Moonlighted examples for QB-like console functions
SUB GraphicColor(Fgd as INT, Bgd as INT)
' Sets foreground and background in QB 16 colors
FRONTPEN w1, QBCToRGB(Fgd)
BACKPEN w1, QBCToRGB(Bgd)
RETURN
ENDSUB
'---------------------------
Sub QBCToRGB(QBCol as INT), INT ' returns RGB color for QB 16 colors
DEF RGBqb: INT
SELECT TRUE
CASE QBCol = 0
RGBqb = RGB( 0x00, 0x00, 0x00)
CASE QBCol = 1
RGBqb = RGB( 0x00, 0x00, 0x7F)
CASE QBCol = 2
RGBqb = RGB( 0x00, 0x7F, 0x00)
CASE QBCol = 3
RGBqb = RGB( 0x00, 0x7F, 0x7F)
CASE QBCol = 4
RGBqb = RGB( 0x7F, 0x00, 0x00)
CASE QBCol = 5
RGBqb = RGB( 0x7F, 0x00, 0x7F)
CASE QBCol = 6
RGBqb = RGB( 0x7F, 0x7F, 0x00)
CASE QBCol = 7
RGBqb = RGB( 0xAF, 0xAF, 0xAF)
CASE QBCol = 8
RGBqb = RGB( 0x5A, 0x5F, 0x5F)
CASE QBCol = 9
RGBqb = RGB( 0x00, 0x00, 0xFF)
CASE QBCol = 10
RGBqb = RGB( 0x00, 0xFF, 0x00)
CASE QBCol = 11
RGBqb = RGB( 0x00, 0xFF, 0xFF)
CASE QBCol = 12
RGBqb = RGB( 0xFF, 0x00, 0x00)
CASE QBCol = 13
RGBqb = RGB( 0xFF, 0x00, 0xFF)
CASE QBCol = 14
RGBqb = RGB( 0xFF, 0xFF, 0x00)
CASE QBCol = 15
RGBqb = RGB( 0xFF, 0xFF, 0xFF)
ENDSELECT
RETURN RGBqb
ENDSUB
'--------------------------------------------------------
Sub GraphicLOCATEYX(LTY as INT, LTX as INT) ' CW : font width, CH : font height
Move w1, CW * (LTX - 1), CH * (LTY - 1)
RETURN
ENDSUB
'--------------------------------------------------------
SUB GraphicBox(LTx as INT, LTy as INT, RBx as INT, RBy as INT, ECol as INT, FCol as INT)
IF FCol = 255 THEN ' Box without edges
RECT w1, LTx, LTy, RBx - LTx, RBy - LTy, QBCToRGB(ECol)
ELSE ' Box with edges
RECT w1, LTx, LTy, RBx - LTx, RBy - LTy, QBCToRGB(ECol), QBCToRGB(FCol)
ENDIF
RETURN
ENDSUB
'--------------------------------------------------------
Sub GraphicCLS() ' Clears 640 X 480 screen to white background
RECT w1, 0, 0, 640, 480, QBCToRGB(15), 255
RETURN
END SUB
'--------------------------------------------------------
Sub GraphicGetKey(), STRING ' currently detecting only numbers
sKY = ""
SELECT TRUE
CASE GETKEYSTATE(0x30) <> 0
CASE& GETKEYSTATE(0x60) <> 0
sKY = "0"
CASE GETKEYSTATE(0x31) <> 0
CASE& GETKEYSTATE(0x61) <> 0
sKY = "1"
CASE GETKEYSTATE(0x32) <> 0
CASE& GETKEYSTATE(0x62) <> 0
sKY = "2"
CASE GETKEYSTATE(0x33) <> 0
CASE& GETKEYSTATE(0x63) <> 0
sKY = "3"
CASE GETKEYSTATE(0x34) <> 0
CASE& GETKEYSTATE(0x64) <> 0
sKY = "4"
CASE GETKEYSTATE(0x35) <> 0
CASE& GETKEYSTATE(0x65) <> 0
sKY = "5"
CASE GETKEYSTATE(0x36) <> 0
CASE& GETKEYSTATE(0x66) <> 0
sKY = "6"
CASE GETKEYSTATE(0x37) <> 0
CASE& GETKEYSTATE(0x67) <> 0
sKY = "7"
CASE GETKEYSTATE(0x38) <> 0
CASE& GETKEYSTATE(0x68) <> 0
sKY = "8"
CASE GETKEYSTATE(0x39) <> 0
CASE& GETKEYSTATE(0x69) <> 0
sKY = "9"
CASE GETKEYSTATE(0x13) <> 0 ' ENTER
sKY = sEn
END SELECT
RETURN sKY
ENDSUB
With best regards.
I've been trying to think of what I might want added and I can only think of two things. I'd like improved help and an improved debugger.
I'd like to see the help reorganized in such a way that it's easy to find what I want and when I look up a word everything I need to know about it is right there on the page, or at least is linked directly to on the page. For example if I don't know about buttons there's no page that has everything about buttons. There should be a button page with the switches, styles, etc. If I look up button in the Find window it doesn't find anything.
If I want to find out about making a window I look up Window and find a very long list of things about windows but no single "window" item that ties it all together. If I recall that OpenWindow is the command to open one, I can find it if I scroll down but maybe I've been working in other languages and I have to just try to remember the command. Probably I'll think of CreateWindow.
I think a good help file is important with a compiler. This one seems to have all the information and for the most part it's clearly explained but it's not always easy to find and it's not always where it should be.
I think the debugger is a little bit less a problem. It works pretty well. But it's really a lot of trouble to use. To debug a program you have to first change the code, then recompile and when you're done you have to change the code back and then recompile again. Yes I know about conditional compiling but most times when I want to set a breakpoint I'll do it once or twice, find out what's going on and never do another one there. A provision for real breakpoints without changing the code and recompiling is needed.
Once in the debugger there should be a provision for setting watches. That's much handier than the long list in the variables window where the 2 or 3 things you want to keep an eye on might be way apart from one another. Sometimes it's nice to have that variable window but watches are also needed.
I've always heard that relying on a debugger is a bad habit. When I started programming a debugger came in the form of a hex dump of memory on a stack of paper a few inches thick the morning after the test run crashed. I can't tell you how many hours I spent debugging by digging through those hex dumps. Yeah that was fun but I like to think I outgrew it! :)
As it stands, I think Ebasic is a good solid language. I agree it's important to always be working on the next version because by the time that's done the world of computers will have changed and so will our expectations.
Barry
Closing the IDE seems to take a lot longer than it should, like 5-10 seconds on my system. Is it just me?
It's a small thing, but becomes irritating after a while. If the slowness is a universal problem, fixing it would be a nice thing.
That's odd Mike.
I had/have that same problem with IBasic Pro (I still use it to look at the source code files)
But I don't have that problem with EBasic; it always closes within a couple of seconds.
XP machine
LarryMc
I dont have this problem by closing IDE.
On my computer EBasic IDE close in a second.
Hi,
On my T60 Laptop with XP SP3 the IDE closes almost immediately
Haim
Hi Larry,
Another 'idea' : i'm one of those old school guys that like to print out listings of the programs i'm working on, during development to use for manual debugging, and to use as scratchpad for noting modifications and additions. when i finish a program i tend to print it , and put it in a binder.
Now, what i feel is missing in most 'modern' compiler environments (and this is not just Ebasic) is a way to structure listings, eg. add custom headers & footers, a way to subdivide the printouts etc (eg. adding $page ; $header; $footer preprocessing commands)
That would be a 'nice to have' feature..
just another 2cts..
Regards,
Frank
Hi Larry,
a block comment / uncomment command would be nice .
Richard
Quote from: RitchieF on March 13, 2010, 04:44:08 AM
a block comment / uncomment command would be nice .
You mean something besides what is already available?:
/* blah...
blah....
blah.....
*/
or am I not understanding?
LarryMc
I would like to have an option to force Upper or Lower case on all Keywords. It might also be nice if the Lexer handled "\\" correctly.
Thanks,
Bill
1. Break / Exit for early escape from loop structures
2. EXIT SUB
3. Byte oriented i/o for binary files in addition to the current record oriented methods
4. Formating for numeric and dates on data entry into field/text boxes
5. Currency data type with native multiply/divide w/o changing to real types
Larry,
QuoteYou mean something besides what is already available
I know about this. I mean I select some lines of code and have in the context menu on the right mouse button a comment / uncomment command.
Then the IDE adds /* in front and */ and at the end of the selection.
Richard
Richard
Interesting. I've never come across that before.
Larry
Larry,
could be a nice feature for the Visual Designer, too
Richard
From billhsln
QuoteI would like to have an option to force Upper or Lower case on all Keywords.
I second this!
Colin
Quote from: RitchieF on March 13, 2010, 10:33:13 AM
Larry,
could be a nice feature for the Visual Designer, too
Richard
I added to my list of things to look into later.
LarryMc
Last time I programmed in some Basic interpreter â€ââ,¬Å" I think QBasic â€ââ,¬Å" was about 25 years ago but I still inclined to write such things some times as
â€Ã...¾FOR A = 0 TO 2*PI STEP .02â€Ã...“and of course getting an error which irritates me. ;D
Quote from: billhsln on March 13, 2010, 08:09:56 AM
It might also be nice if the Lexer handled "\\" correctly.
This is all I want. :)
Maybe a few print commands that can make printing easier.
Quote from: Shrike on March 15, 2010, 05:02:45 PM
Quote from: billhsln on March 13, 2010, 08:09:56 AM
It might also be nice if the Lexer handled "\\" correctly.
This is all I want. :)
Not sure what you mean by that, could you clarify?. \ is an escape sequence to the lexer, just as it is in other mainstream compilers. It is in the docs, but maybe not clear enough.
\\ = \
\t = tab
\n = newline
\xnn = hexadecimal constant, so you can embed things in strings like \x0C
Paul.
What I mean is that when you enter:
value1 = "\\"
value2 = "Test"
"Test" will be in displayed in the "String Color", where "\\" will be in the "Text Color", where it should be in "String Color".
Bill
Ahhh... you mean Scintilla's lexer, not Emergence's compiler lexer.
Sorry, I did not know the difference.
Bill
An error trapping routine would be nice. Like an ON ERROR RESUME NEXT or ON ERROR GOTO. It would keep your program from crashing on some hidden bugs. Then have an ERRORSTRING or something like that. :)
Hi,
for future releases here are a few suggestions to consider to make IWBasic even better:
Static Local Variables (like Aurora has)
An IDE that can run from a memory stick (thumb drive).
64 - bit
The option of using controls in an OOP fashion:
e.g. Dim myButton as cButton
myButton.width = 50
myButton.text = "Press Me"
IDE with Intellisense (along with the existing autocomplete)
A built in Browse for Folder function
Enums that can be negative:
e.g.
ENUM foo
bar = -1
cat = -2
dog = -3
ENDENUM
Regards.
Larry/Sapero:
I'm really looking forward to version 2.0 to be released.
In the meantime, I just realized as I'm coding a program for a customer that there are a couple of important capabilities that are missing in which I've had to work around.
One missing item is dynamic arrays. I haven't had a need to redim arrays until today and really miss this capability in IWBasic.
Another is the ability to declare static variables within subroutines:
OPENCONSOLE
DEF result as INT
sub doSomething(a as int, b as int), int
static var as int
some code here...
var = var * (a + b)
return var
endsub
result = doSomething(5,10)
print result
DO:UNTIL INKEY$ <> ""
CLOSECONSOLE
END
Two other commands I miss are createThread (releaseThread, resumeThread, pauseThread, etc.) and createMutex (lockMutex, releaseMutex, etc.). Up to now, I've had to put my own thread and mutex code together using the API, but most other BASICs have added these commands and I think they would make life a whole lot easier on us if IWBasic included them also.
I'm not complaining, you are doing great work. It's just that these additional commands would bring the language to the point where it would match today's high-tech requirements and customer requests given all the new capabilities of today's microprocessors.
Just a thought. :)
Logman
Read starting here http://ebasic-aurora.com/forums/index.php?topic=4100.msg32480#msg32480 for the discussion about redim arrays.
read here http://ebasic-aurora.com/forums/index.php?topic=4100.msg32592#msg32592 for the announcement that STATIC has been added
LarryMc
Larry:
You are right. I read through these updates as Sapero writes them, but I must have missed the part about static variables. Glad they are being added--really nice.
Logman
Most BASICs have a simple REDIM capability like the following that don't require a convoluted set of work-around instructions:
Dim MyArray[2] as INT
MyArray[0] = 0
MyArray[1] = 1
ReDim MyArray[4]
MyArray[2] = 2
MyArray[3] = 3
ReDim MyArray[4]=0
ReDim MyArray[4] saves the contents of the previous array whereas ReDim MyArray[4]=0 destroys all contents of the previous array.
Logman
One other capability that would be extremely handy would be SELECT/CASE statements that could handle multiple tests on the same line.
For instance:
DEF name[10] as ISTRING
DEF strLen, i as INT
name = "Lastname"
strLen = LEN(name)
FOR i = 0 to strLen
SELECT name[i]
CASE >="A" and <="Z"
do something code...
CASE >="a" and <="z"
do something code...
CASE >="0" and <="9"
do something code...
DEFAULT
do something code...
ENDSELCT
NEXT i
This would be extremely handy in parsing text and so forth. Right now, this can't be done using the CASE/CASE& combination.
Logman
Select-Case block internally works like a set of If-Then, the value of Select is compared with all Case values.
If you put TRUE to Select, the first Case which is True will be eecuted:
select true
' case X -> expression X must evaluate to TRUE (strict number 1) or anything else (0, 2, 3, 4 ...).
case name[i]>="A" and name[i]<="Z"
DEF name[10] as ISTRING
DEF strLen, i as INT
name = "Lastname"
strLen = LEN(name)
FOR i = 0 to strLen
SELECT 1
CASE name[i] >="A" and name[i] <="Z"
do something code...
CASE name[i] >="a" and name[i] <="z"
do something code...
CASE name[i] >="0" and name[i] <="9"
do something code...
DEFAULT
do something code...
ENDSELCT
NEXT i
LarryMc
Ah so. I was attempting to follow the example in the manual on page 61. It depicts parentheses around the expression and this wasn't working:
SELECT TRUE
CASE (Choice > 10)
PRINT "Number is greater than 10"
CASE (Choice < 10)
PRINT "Number is less than 10"
ENDSELECT
But, the following code does in fact work:
'Test code...
j = 0
FOR i = 0 to strLen
SELECT true
CASE iText[i] >= "A" and iText[i] <= "Z"
iWord[j] = iText[i]
j=j+1
CASE iText[i] >= "a" and iText[i] <= "z"
iWord[j] = iText[i]
j=j+1
CASE iText[i] >= "0" and iText[i] <= "9"
iWord[j] = iText[i]
j=j+1
DEFAULT iText[i] = " "
dArray[k]=iWord
ENDSELECT
NEXT i
Amazing, thanks Larry & Sapero. :)
Logman
Works fine with parentheses for me
I tried 9,10,11
int choice = 10
SELECT TRUE
CASE (Choice > 10)
PRINT "Number is greater than 10"
CASE (Choice < 10)
PRINT "Number is less than 10"
default
PRINT "Number is ",choice
ENDSELECT
you didn't test your code with 10 by any chance did you?
your posted code didn't address choice being 10; mine does.
LarryMc
I was just toying around with some simple 3D programming. I know very little about 3D programming so I initially got the 3D pack with whichever Pixia version it came with to try to learn it; but alas, almost no documenentation. The current version is the same, of course.
I realize it's way too late to do anything about that so what I'd like to suggest is that the new version include some serious 3D documentation.
And yes, I know that there are going to be 40 million reasons to put that off to the future. While it's true that tomorrow never comes, 3D documentation should.
I've said before (probably far too many times) that I think documentation is one of the weakest areas in IWBasic and I'm pretty sure you guys know that and are doing some things about it. I really hope 3D docs will be a serious part of that.
Barry