Home
JAQForum Ver 24.01
Log In or Join  
Active Topics
Local Time 18:03 22 Nov 2024 Privacy Policy
Jump to

Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.

Forum Index : Microcontroller and PC projects : BASIC stack

Author Message
BobDevries

Senior Member

Joined: 08/06/2011
Location: Australia
Posts: 266
Posted: 08:33am 28 Jun 2011
Copy link to clipboard 
Print this post

You know, I've often wondered why BASIC didn't have any user accessible stack.

Commands like:

PUSH(var1, var2,...)
POP(var1, var2,...)

could be invaluable.

The BASIC interpreter which came with the Microbee computer (Microworld basic) had the ability to add variables to the GOSUB command:

GOSUB (var1, var2,...) line_number

then the command VAR was used to retrieve the variables:

VAR (var1, var2,...)

Possibly a stack could be implemented in BASIC; hmm, thinking cap on....

Thoughts?

Regards,

Bob Devries
Dalby, QLD, Australia
 
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3194
Posted: 10:13am 28 Jun 2011
Copy link to clipboard 
Print this post

I was planning user defined functions and subroutines.

For example:
100 FUNCTION MyFun(var1, var2)
200 MyFun = var1 + var2
300 RETURN

You could then us it in your program:
10 x = MyFun(3, 6)

And x should contain 9.

Also a similar thing for subroutines (except they do not return a value).

I am about half way there on this one. Is it what you were looking for?

Geoff
Geoff Graham - http://geoffg.net
 
Nick

Guru

Joined: 09/06/2011
Location: Australia
Posts: 512
Posted: 11:56am 28 Jun 2011
Copy link to clipboard 
Print this post

Geoff: Does adding more and more commands and functions have a penalty in code execution of the BASIC interpreter?

With so many suggestions coming in, are we redefining the BASIC into a convoluted language?

 
Geoffg

Guru

Joined: 06/06/2011
Location: Australia
Posts: 3194
Posted: 12:40pm 28 Jun 2011
Copy link to clipboard 
Print this post

  Nick said   Does adding more and more commands and functions have a penalty in code execution of the BASIC interpreter?

No, it does not affect the speed or any other aspect (memory usage, etc). This is because the interpreter turns each keyword into a single byte token when the program is loaded. When the program runs the interpreter just uses the value of the token to index to the C code for that particular keyword - this is economical with memory, very fast and allows many keywords without affecting speed. This is also why the interpreter lists keywords in upper case, it is expanding the keyword back to ordinary text.

  Nick said   With so many suggestions coming in, are we redefining the BASIC into a convoluted language?

Yes, this is a worry. User defined functions are part of the ANSI standard for BASIC so I am not inventing anything new with them but other features (such as PIN() and SETPIN) are new and only make it harder for someone to transfer his/her experience to the Maximite.

For this reason I try to resist adding something that is not in Microsoft BASIC or the ANSI standard. A good example is implementing a stack in BASIC, that runs against how the language works and is not part of a standard. However, if the requirement is important enough, there is often no other choice other than inventing something new.

Geoff
Geoff Graham - http://geoffg.net
 
Nick

Guru

Joined: 09/06/2011
Location: Australia
Posts: 512
Posted: 06:42pm 28 Jun 2011
Copy link to clipboard 
Print this post

I guess we should be looking at commands that actually give the MM new functions and features. There are quite a few suggestions being made that are just for convenience that basically just take what can be achieved with 2 or 3 commands into 1.

Or a duplication such as the PSET and PIXEL.

 
Print this page


To reply to this topic, you need to log in.

© JAQ Software 2024