IonicWind Software

Announcements => News and Announcements => Topic started by: Rock Ridge Farm (Larry) on March 10, 2010, 06:34:11 AM

Title: Put in your request
Post by: Rock Ridge Farm (Larry) on March 10, 2010, 06:34:11 AM
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
Title: Re: Put in your request
Post by: Blue Steel on March 10, 2010, 06:55:07 AM
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
Title: Re: Put in your request
Post by: tbohon on March 10, 2010, 08:12:20 AM
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 ...  ;)
Title: Re: Put in your request
Post by: ZeroDog on March 10, 2010, 09:08:11 AM
A way to disable/enable different command paks would come in handy....
Title: Re: Put in your request
Post by: aurelCB on March 10, 2010, 10:20:37 AM
Defenatly missing REDEF or REDIM  command especialy for arrays.
Many other basic languages have this command....
Title: Re: Put in your request
Post by: yoko on March 10, 2010, 10:36:50 AM
Mac support?
j/k

Truly Unicode Friendly please (can edit unicode directly in the editor and outputs correctly in compiled program)
Title: Re: Put in your request
Post by: WSG on March 10, 2010, 10:52:07 PM
I second Mac OSX support.
Title: Re: Put in your request
Post by: friet on March 11, 2010, 01:15:42 AM
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
Title: Re: Put in your request
Post by: mannybass on March 11, 2010, 03:33:58 AM
A database grid control would be great, Paul once mentioned he had one in the works.
Title: Re: Put in your request
Post by: zaphod on March 11, 2010, 03:38:11 AM
XP theme + version infos + icon setting into the executable are good additions ....
Title: Re: Put in your request
Post by: YouLongKix on March 11, 2010, 07:12:23 AM
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.
Title: Re: Put in your request
Post by: barry on March 12, 2010, 09:01:10 AM
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
Title: Re: Put in your request
Post by: mrainey on March 12, 2010, 11:57:00 AM
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.
Title: Re: Put in your request
Post by: LarryMc on March 12, 2010, 12:07:18 PM
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
Title: Re: Put in your request
Post by: aurelCB on March 12, 2010, 12:41:47 PM
I dont have this problem by closing IDE.
On my computer EBasic IDE close in a second.
Title: Re: Put in your request
Post by: Haim on March 13, 2010, 01:47:01 AM
Hi,
On my T60 Laptop with XP SP3 the IDE closes almost immediately

Haim
Title: Re: Put in your request
Post by: friet on March 13, 2010, 02:41:38 AM
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
Title: Re: Put in your request
Post by: RitchieF on March 13, 2010, 04:44:08 AM
Hi Larry,

a block comment / uncomment command would be nice .

Richard
Title: Re: Put in your request
Post by: LarryMc on March 13, 2010, 06:12:15 AM
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
Title: Re: Put in your request
Post by: billhsln on March 13, 2010, 08:09:56 AM
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
Title: Re: Put in your request
Post by: jayelbee on March 13, 2010, 08:57:23 AM
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
Title: Re: Put in your request
Post by: RitchieF on March 13, 2010, 09:19:25 AM
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   
Title: Re: Put in your request
Post by: LarryMc on March 13, 2010, 09:28:37 AM
Richard

Interesting.  I've never come across that before.

Larry
Title: Re: Put in your request
Post by: RitchieF on March 13, 2010, 10:33:13 AM
Larry,

could be a nice feature for the Visual Designer, too

Richard
Title: Re: Put in your request
Post by: celphick on March 13, 2010, 05:41:46 PM
From billhsln
QuoteI would like to have an option to force Upper or Lower case on all Keywords.
I second this!

Colin
Title: Re: Put in your request
Post by: LarryMc on March 13, 2010, 06:39:55 PM
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
Title: Re: Put in your request
Post by: Ficko on March 14, 2010, 04:46:42 AM
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
Title: Re: Put in your request
Post by: 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. :)
Title: Re: Put in your request
Post by: peterpuk on March 15, 2010, 08:26:55 PM
Maybe a few print commands that can make printing easier.
Title: Re: Put in your request
Post by: Ionic Wind Support Team on March 16, 2010, 02:51:45 PM
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.
Title: Re: Put in your request
Post by: billhsln on March 16, 2010, 04:51:31 PM
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
Title: Re: Put in your request
Post by: Ionic Wind Support Team on March 16, 2010, 04:56:41 PM
Ahhh...  you mean Scintilla's lexer, not Emergence's compiler lexer.

Title: Re: Put in your request
Post by: billhsln on March 16, 2010, 05:03:40 PM
Sorry, I did not know the difference.

Bill
Title: Re: Put in your request
Post by: ckoehn on March 17, 2010, 05:40:33 AM
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.  :)
Title: Re: Put in your request
Post by: Guilect on May 17, 2010, 05:47:55 PM

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.
Title: Re: Put in your request
Post by: Logman on January 28, 2011, 12:32:07 PM
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
Title: Re: Put in your request
Post by: LarryMc on January 28, 2011, 12:40:00 PM
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
Title: Re: Put in your request
Post by: Logman on January 28, 2011, 01:07:23 PM
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
Title: Re: Put in your request
Post by: Logman on January 30, 2011, 06:37:23 AM
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
Title: Re: Put in your request
Post by: Logman on January 30, 2011, 06:52:02 AM
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
Title: Re: Put in your request
Post by: sapero on January 30, 2011, 07:00:42 AM
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"
Title: Re: Put in your request
Post by: LarryMc on January 30, 2011, 11:30:05 AM
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
Title: Re: Put in your request
Post by: Logman on January 30, 2011, 02:24:28 PM
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
Title: Re: Put in your request
Post by: LarryMc on January 30, 2011, 02:45:50 PM
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
Title: Re: Put in your request
Post by: barry on February 17, 2011, 01:08:00 PM
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