RetroBASIC

Basicprogramming(.org) => SmallBASIC => Topic started by: Cybermonkey on August 16, 2018, 06:17:38 PM

Title: Welcome to the SmallBASIC board
Post by: Cybermonkey on August 16, 2018, 06:17:38 PM
Finally, we have a new place for the discussions about SmallBASIC. Chris is also "on board" (literally) and will have a look on the topics.
@Chris: If you will use them or not, I thought you should have moderator privileges, so don't mind that you have those permissions.

For those of you who don't know SmallBASIC:
Quote
SmallBASIC is a fast and easy to learn BASIC language interpreter ideal for everyday calculations, scripts and prototypes. SmallBASIC includes trigonometric, matrices and algebra functions, a built in IDE, a powerful string library, system, sound, and graphic commands along with structured programming syntax.
Find more (and the downloads) on the homepage: http://smallbasic.github.io/
Title: Re: Welcome to the SmallBASIC board
Post by: johnno56 on August 16, 2018, 08:34:44 PM
YES!!! SB has a pulse once again!! Brilliant!

J
Title: Re: Welcome to the SmallBASIC board
Post by: chrisws on August 17, 2018, 11:04:16 PM
Hi,

Thanks Cybermonkey for creating this forum and making a home for SmallBASIC.

I'm still keen to continue working on SmallBASIC, but having good a feedback channel helps to maintain motivation.

It's always really cool to see the amazing programs people have made with it.

Cheers,
Chris



Title: Re: Welcome to the SmallBASIC board
Post by: B+ on August 18, 2018, 03:41:21 PM
Hi Chris,

If you have some time, you might review this section "SmallBASIC notes":
http://retrogamecoding.org/board/index.php?topic=382.0

for accuracy, or see if I am misrepresenting or misleading...

or for updating or just see if it might generate some comments of your own.

Dang it's been awhile since I looked at them.

Title: Re: Welcome to the SmallBASIC board
Post by: ScriptBasic on August 19, 2018, 04:45:54 PM
SB

We really need to work something out with this reference. Script BASIC has been around since 2000. (18 years) How long has SmallBASIC been around?

How about you using SmB as your shortened reference?
Title: Re: Welcome to the SmallBASIC board
Post by: ZXDunny on August 19, 2018, 05:13:45 PM
I dunno, whenever anyone uses the term SB I automatically assume that they're talking about SmallBASIC tbh, as it's far more likely they'll be talking about that than ScriptBASIC - maybe we should start referring to Script BASIC as "ScB" from now on?
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on August 19, 2018, 07:55:21 PM
To avoid a capital case involving John, I could live with sb, small s, small b for SmallBASIC.  ;)

It's easier to type.
Title: Re: Welcome to the SmallBASIC board
Post by: ScriptBasic on August 20, 2018, 04:21:37 AM
To avoid a capital case involving John, I could live with sb, small s, small b for SmallBASIC.  ;)

It's easier to type.

Great idea!

SB as an abbreviation for Script BASIC is used extensively on the Oxygen Basic, AllBASIC and Script BASIC forums. Small BASIC hasn't made much of an impact outside of this forum. If it wasn't for B+, I still wouldn't have known about it. I will have to give it a try when I can find some spare time. I have maintained the Script BASIC open source project since 2005. It has had a dedicated website, forum and wiki since that time.

I'm surprised Microsoft hasn't come after Chris as SmallBASIC is a registered trademark for Microsoft's BASIC interpreter.



Title: Re: Welcome to the SmallBASIC board
Post by: B+ on August 20, 2018, 05:29:13 AM
To avoid a capital case involving John, I could live with sb, small s, small b for SmallBASIC.  ;)

It's easier to type.

Great idea!

SB as an abbreviation for Script BASIC is used extensively on the Oxygen Basic, AllBASIC and Script BASIC forums. Small BASIC hasn't made much of an impact outside of this forum. If it wasn't for B+, I still wouldn't have known about it. I will have to give it a try when I can find some spare time. I have maintained the Script BASIC open source project since 2005. It has had a dedicated website, forum and wiki since that time.

I'm surprised Microsoft hasn't come after Chris as SmallBASIC is a registered trademark for Microsoft's BASIC interpreter.

That's because Chris version was before MicroSoft's and there were/are many apps with Small Basic name as Aurel has demonstrated to me some time ago. (see attached article from ASCII-World from archived site)

Compare date May 2000 to MS Small Basic Oct 2008: https://en.wikipedia.org/wiki/Microsoft_Small_Basic

Also you have tried it and posted a nice response in reply #1 here: http://retrogamecoding.org/board/index.php?topic=382.0

So I wonder why MS called theirs Small Basic?( NOT SmallBASIC ) What's Small about their version or them?
Title: Re: Welcome to the SmallBASIC board
Post by: ZXDunny on August 20, 2018, 09:13:26 AM
So SmallBASIC has been around as long as ScriptBASIC?
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on August 20, 2018, 02:48:41 PM
https://en.wikipedia.org/wiki/ScriptBasic

Quote
ScriptBasic has been developed since 1999 and has reached a fairly matured state in terms of functions and stability. The precompiled version available for Windows and Linux includes a command line version and a standalone web server.

Looks like SB started before sb but it's odd the ASC-II article of SmallBASIC is from Feb 1999. Reference Note #2: https://en.wikipedia.org/wiki/SmallBASIC

John:
Quote
Small BASIC hasn't made much of an impact outside of this forum.
I just noticed today that ScriptBasic has been referenced 0 times in other articles by Wiki entry versus quite a few for SmallBASIC though SB has a Wiki (though that is a document created internally, it demonstrates a Bigger Better Support team).

We 'll have to ask John if SB can be downloaded from GooglePlay for free into Android devices as sb can b.

Another amazing stat: sb registered with SF 13 days before SB.
Title: Re: Welcome to the SmallBASIC board
Post by: ScriptBasic on August 20, 2018, 04:13:44 PM
Wow!

I didn't realize SmallBASIC has been around that long. Congrats for keeping your project alive with so many BASIC offerings out there.

@B+  I have a Android Linux console mode version of Script BASIC that is more experimental than a platform I'm trying to support. I have my hands full trying to support Linux and Windows.

Title: Re: Welcome to the SmallBASIC board
Post by: chrisws on August 21, 2018, 10:57:20 AM
Wow!

I didn't realize SmallBASIC has been around that long. Congrats for keeping your project alive with so many BASIC offerings out there.

@B+  I have a Android Linux console mode version of Script BASIC that is more experimental than a platform I'm trying to support. I have my hands full trying to support Linux and Windows.


I should mention that SmallBASIC was originally made by Nicholas Christopoulos for the Palm Pilot. The original starting date is a bit sketchy. The change log starts at version 0.5.4a back in 2001-02-04. I got interested in working on SmallBASIC as a porting project for the Franklin eBookman a year or so later. It's been pretty much just a hobby project since then.

Title: Re: Welcome to the SmallBASIC board
Post by: ScriptBasic on August 21, 2018, 06:42:57 PM
That is what it is going to take to keep BASIC alive. Folks willing to take ownership in a BASIC project that stirs their passion to be a language developer.
Title: Re: Welcome to the SmallBASIC board
Post by: Tomaaz on September 10, 2018, 11:25:46 PM
Is it a completely re-written version of this interpreter? I think I did try Small Basic in the past, but this version seems to be much better (or I'm just getting old and don't remember things correctly ;)).
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on September 11, 2018, 02:27:52 PM
Is it a completely re-written version of this interpreter? I think I did try Small Basic in the past, but this version seems to be much better (or I'm just getting old and don't remember things correctly ;)).

SmallBASIC, not MS Small Basic, did go through a radical change with IDE going from a normal one to one accessed from right mouse clicks only (after a file is loaded from Navigation screen).

There is an opening screen from which to select files or folders to run or edit, I call the navigation screen, there is another screen to start new files, save as files, rename files... the other functions of a file dialog besides selecting a file to load for run or edit.

SmallBASIC (not MS Small Basic)  http://smallbasic.github.io

Or get if from GooglePlay for your Android device. Oh for Android, right mouse clicks are simulated by tapping the tiny 3 vertical dots in lower right of screen (unless that was changed since last I looked).
Title: Re: Welcome to the SmallBASIC board
Post by: Tomaaz on September 11, 2018, 08:16:56 PM
SmallBASIC (not MS Small Basic)  http://smallbasic.github.io

I know the difference between these two (I don't consider MS Small Basic to be BASIC), but I remember a SmallBASIC version based on FLTK(?). Also, I use Geany with SmallBASIC. It's much easier and more comfortable to use.
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on September 11, 2018, 09:01:36 PM
Yes FLTK, F? Light Took Kit is gone as well as the normal IDE.

Development outside SmallBASIC edtor looses advantage of instant help F1?
Title: Re: Welcome to the SmallBASIC board
Post by: Tomaaz on September 11, 2018, 09:15:32 PM
Development outside SmallBASIC edtor looses advantage of instant help F1?

That indeed may be an advantage for beginners. But for me the comfort of using Geany outweighs lack of a build-in help (I can still see error messages and use the documentation). But you know what is the best about SmalBASIC? It doesn't use sigils! :) And the set of build-in functions is quite impressive.
Title: Re: Welcome to the SmallBASIC board
Post by: Tomaaz on September 11, 2018, 09:25:58 PM
And the arrays can hold values of a different type. And their size doesn't have to be explicitly declared. Ladies and gentleman - we have a very nice BASIC here! :)
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on September 12, 2018, 03:47:38 PM
And the arrays can hold values of a different type. And their size doesn't have to be explicitly declared. Ladies and gentleman - we have a very nice BASIC here! :)

I am very eager to see what you might code with it. Maybe try something using << for array appending.

Code: [Select]
REM SmallBASIC
REM created: 12/09/2018

Dim shoppingList()
while 1
  input "Enter item for shopping list > ";item
  if item ="" then exit else shoppingList << item
wend
for i in shoppingList do ? i;", ";
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on September 12, 2018, 03:51:50 PM
Text rotation fun!
Code: [Select]
'text rotation fun.bas for SmallBASIC 0.12.11 (B+=MGA) 2017-02-02

'global variables
message = "abcdefghijklmnopqrstuvwxyz""
secWide = txtw(message) + 2
secHigh = txth(message) + 2
dim sect(secWide, secHigh) 'array to store message points
color rgb(200, 200, 200),0 : cls
rect 0, 0, secWide, secHigh, 9

? message
loadSect 0, 0 'load array
'debug checks
'for y = 0 to secHigh
'  for x = 0 to secWide
'    if sect(x, y) then pset x + 200, y + 200
'  next
'next
'input "OK ";ok

dim plasma(5, 3)
for i = 0 to 5
  plasma(i, 0) = rnd * rnd
  plasma(i, 1) = rnd * rnd
  plasma(i, 2) = rnd * rnd
next

cls
cx = xmax/2 : cy = ymax/2
while 1
  cls
  dp 0
  yaxis cx, cy/4, a, 2
  dp 1
  xaxis cx, 3*cy/4, a, 5
  dp 2
  rotate cx/2, cy, a, 1
  dp 3
  rotate 3*cx/2, cy, a -90, 2.5
  dp 4
  rotate cx, cy/2, -4*a + 90, 2
  dp 5
  rotate cx, 3*cy/2, 2*a + 180, 4.5
  showpage
  delay 10
  a = a + 1
  if a = 360 then a = 0
wend
pause

sub dp(i)
  color rgb(128 + 127*sin(plasma(i,0)*a), 128 + 127*sin(plasma(i, 1)*a), 128 + 127*sin(plasma(i, 2)*a))
end

sub loadSect(xstart, ystart)
  local x, y, p, black
  'these are all global
  black = rgb(100 ,100, 100)
  for y = 0 to secHigh
    for x = 0 to secWide
      p = POINT(xstart + x, ystart + y)
      if p < black then sect(x, y) = 1 '<== data from screen points
    next
  next
end

sub rotate(cx, cy, angle, scale) 'and scale
  local cax, cay, ra, cc, d, anew, ax,ay

  cax = secWide/2 : cay = secHigh/2  'array center
  for y = 0 to secHigh
    for x = 0 to secWide
      cc = sect(x,y)
      if (x-cax) <> 0  and cc <> 0 then
        d = ((x-cax)^2+(y-cay)^2)^.5
        anew = atan((y-cay)/(x-cax))
        if x-cax <  0 and y-cay  < 0 then anew = anew + pi+rad(angle)  '-x,-y
        if x-cax <  0 and y-cay >= 0 then anew = anew + pi+rad(angle) '-x,+y
        if x-cax >= 0 and y-cay  < 0 then anew = anew + rad(angle)    '+x,-y
        if x-cax >= 0 and y-cay >= 0 then anew = anew + rad(angle)   '+x,+y
        ax = d*cos(anew):ay=d*sin(anew)
        rect int(cx+ax*scale),int(cy+ay*scale) step scale+1, scale+1 filled
      end if
    next
  next
end

sub yaxis(cx, cy, angle, scale)
   local cax, cay, cc, ax,ay

  cax = secWide/2 : cay = secHigh/2  'array center
  for y = 0 to secHigh
    for x = 0 to secWide
      cc = sect(x,y)
      if cc <> 0 then
        ax = (x - cax)*cos(rad(angle)):ay= (y - cay)
        rect int(cx+ax*scale),int(cy+ay*scale) step scale+1, scale+1 filled
      end if
    next
  next
end

sub xaxis(cx, cy, angle, scale)
   local cax, cay, cc, ax,ay

  cax = secWide/2 : cay = secHigh/2  'array center
  for y = 0 to secHigh
    for x = 0 to secWide
      cc = sect(x,y)
      if cc <> 0 then
        ax = (x - cax) :ay = (y - cay) * sin( rad(angle))
        rect int(cx+ax*scale),int(cy+ay*scale) step scale+1, scale+1 filled
      end if
    next
  next
end 

Title: Re: Welcome to the SmallBASIC board
Post by: B+ on September 12, 2018, 03:55:08 PM
Do you like chess?
Code: [Select]
'internet grabber by jasali  SmallBASIC 0.12.11 2018-02-13

open "chess-pgnfile.pgn" for output as #2
for i=1 to 20
  open "http://moodle.usm.md/endgame/getpgn.php?pid="+i as #1
  tload #1,p
  ?p:?#2,p
  close #1
next
close #2
pause 'for screen shot and scroll through screen

Title: Re: Welcome to the SmallBASIC board
Post by: lettersquash on February 10, 2019, 09:23:54 PM
Hi Guys, this is my first post here. Thanks to all who have helped me get registered here - there was some glitch in the system somewhere - and thanks especially to Chris for continuing to work on "sb". It's a damn shame M$ ripped off the name, and I don't suppose your lawyers would be up to theirs. ;D Would it be worth changing the name to avoid the confusion? Projects change names all the time. Almost every hit when I search is for MS Small Basic, and they often don't specify that it's MS.

Anyway, I'm almost completely new to sb, just played around with it on my phone, tablet and now my Windows 7 PC. I've written BBC BASIC since the '80s (on an Acorn Electron), and now use BBC for Windows (BB4W) and AutoHotkey, just for things I want to use myself, or for fun. Profit would be nice.

Over the years I've looked at a few other BASICs, but not found any that grabbed me, or I found issues with them, or something about them just didn't fit. I tried sb expecting it to disappoint too, but it hasn't. I'm really impressed with it.

One thing I'm puzzled about is the different files in the installation. sbasicg.exe and sbasicg64 are presumably 32-bit and 64-bit versions, are they? I thought at first that sbasic.exe would run and choose the right version, but it reports the missing file, libstdc++-6.dll and the other, sbasicw.exe starts a web server in a console window, but I've no idea how to use it or what I'd use it for. It also triggered some warning about certain features being blocked for security reasons. I didn't find anything online about installing sb.

Should I run sbasicg64.exe on my 64-bit Windows, and is there anything I need to take care with between them when coding?

Cheers
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on February 11, 2019, 12:21:12 AM
Hi Guys, this is my first post here. ...

Should I run sbasicg64.exe on my 64-bit Windows, and is there anything I need to take care with between them when coding?

Cheers

Welcome lettersquash!

I use sbasic64.exe on my 64-bit Windows 10 laptop. Do you know how to find SB files in Roaming? Might be handy to make a copy of a working set of settings.txt
Title: Re: Welcome to the SmallBASIC board
Post by: lettersquash on February 11, 2019, 12:58:42 AM
Cheers for that B+, and thanks for the welcome. I've found it and made a copy. I don't know where the settings would be editable other than in Roaming though - I don't see a link to set anything in the program.

BTW, I love the text rotation fun, that's a clever piece of coding, but what does the line rect 0, 0, secWide, secHigh, 9 do at the end of the global variables section? It seems like it ought to be drawing a rectangle in colour 9, but I can't see one or get it to be seen, even when I mess about with it - change the colour, position, add filled to it, etc.
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on February 11, 2019, 01:20:00 AM
Text rotation fun? You will have to remind where that's at, not on-line or samples, from here at Retro?

ah! here: http://retrogamecoding.org/board/index.php?topic=630.msg4695#msg4695

I have to refresh my memory...

OK
Code: [Select]
'global variables
message = "abcdefghijklmnopqrstuvwxyz""
secWide = txtw(message) + 2
secHigh = txth(message) + 2
dim sect(secWide, secHigh) 'array to store message points
color rgb(200, 200, 200),0 : cls
rect 0, 0, secWide, secHigh, 9

? message
input "ok" ;wate  'added this because I probably deleted it when everything was working correctly

This was a check to see that I got the box dimensions correctly, that all the text was fitting in the Load Section.

Oh heck! It's here in this thread too! ;-))
Title: Re: Welcome to the SmallBASIC board
Post by: B+ on February 11, 2019, 01:47:17 AM
Here is another one from BP.org (I think), still works! I think this is my own handmade font.
Code: [Select]
'SB rotation.bas for SmallBASIC 0.12.2 [B+=MGA] 2016-04-11

cx=xmax/2:cy=ymax/2
secwide=275
sechigh=50
dim sect(secwide,sechigh)
sz=50
color 15,0:cls
post 18,8,sz,15,"SmallBASIC"
getsec 0,0
color 15,4:cls
rotate
pause

'scale for 1x2 cells
sub post(x,y,scale,fore,mess)
  local lm,i,c,p1,p2,p3,p4,px,gf
  thick=1/40*scale
  dr=1/6*scale-.5*thick
  gf=.04*scale
  color fore
  p1=.16*scale : p2=.32*scale : p3=.48*scale : p4 =.64*scale
  lm=len(mess) : py=y+.5*thick
  if lm*scale*.5+x-xmax>0 then Beep 'draw it anyway
  for i=1 to lm
    c=mid(mess,i,1)
    px=x+(i-1)*scale*.5+.5*thick
    select case c
    case "a":ac px+p1,py+p3,0,360:lx=px+p2:ly=py+p2-gf:tl 0,p2:tl 0,2*gf
    case "l":lx=px+p1-gf:ly=py:tl gf,0:tl 0,p4:tl gf,0:tl -2*gf,0
    case "m":lx=px:ly=py+p2:tl 0,p2:lx=px+p1:ly=py+p4:tl 0,-p2:tl -p1,p1:lx=px+p2:ly=py+p4:tl 0,-p2:tl -p1,p1
    case "A":lx=px:ly=py+p4:tl p1-gf,-p4:tl 2*gf,0:tl p1-gf,p4:lx=px+p1-2*gf:ly=py+p2:tl p1,0
    case "B":ac px+p1,py+p1,270,450:ac px+p1,py+p3,270,450
             lx=px:ly=py:tl 0,p4:tl p1,0:lx=px:ly=py+p2:tl p1,0:lx=px:ly=py:tl p1,0     
    case "C":ac px+p1,py+p1,180,320:ac px+p1,py+p3,40,180:lx=px:ly=py+p1:tl 0,p2   
    case "I":lx=px+p1*.5:ly=py:tl p1,0:lx=px+p1*.5:ly=py+p4:tl p1,0:lx=px+p1:ly=py:tl 0,p4
    case "M":lx=px:ly=py+p4:tl 0,-p4:tl p1,p2:tl p1,-p2:tl 0,p4
    case "S":ac px+p1,py+p1,90,360:ac px+p1,py+p3,270,540
    end select
  next
end

'ac is for arc, x,y is radius center, das=degree angle start, dae=degree angle end
sub ac(x,y,das,dae)
  'note dr, drawing radius has to be global, use COLOR globally sets color
  'note thick also made globals by POST sub
  local a,x1,y1,stepper
  if dr then
    if int(thick)=0 then stepper=1/(dr*pi) else stepper=(thick/2)/(dr*pi/2)
    for a=das to dae step stepper
      x1=dr*cos(rad(a)) : y1=dr*sin(rad(a))
      if int(thick)<1 then  pset x+x1,y+y1 else circle x+x1,y+y1,thick filled
    next
  fi
end

'tl stands for thick line in the LINE STEP x,y format
sub tl(stepx,stepy) 'tl=thickline 
  'lastx, lasty globals for last drawn position
  'thick has to be global
  'note thick=0 still draws a line, use COLOR so line is drawn from this global
  local length,dx,dy,i
  length=((stepx)^2 +(stepy)^2)^.5
  if length then
    dx=stepx/length : dy=stepy/length
    for i=0 to length
      circle lx+dx*i,ly+dy*i,thick filled
    next
  end if
  lx=lx+stepx : ly=ly+stepy
end

sub getsec(xstart,ystart)
  local x,y
  'these are all global
  for y=0 to sechigh
    for x=0 to secwide
      sect(x,y)=POINT(xstart+x,ystart+y) '<== data from screen points
    next
  next
end

sub rotate 'and scale
  local cax,cay,ra,cc,d,anew,ax,ay
  dx=(xmax/secwide)/720 :dy=(ymax/sechigh)/720
  cax=secwide/2:cay=sechigh/2  'array center
  for i=1 to 721
    cls
    for y=0 to sechigh
      for x=0 to secwide
        cc=sect(x,y)
        if (x-cax)<>0 and cc<>0 then
          d=((x-cax)^2+(y-cay)^2)^.5
          anew=atan((y-cay)/(x-cax))
          if x-cax<0 and y-cay<0 then anew=anew+pi+rad(ra)  '-x,-y
          if x-cax<0 and y-cay>=0 then anew=anew+pi+rad(ra) '-x,+y
          if x-cax>=0 and y-cay<0 then anew=anew+rad(ra)    '+x,-y
          if x-cax>=0 and y-cay>=0 then anew=anew+rad(ra)   '+x,+y
          ax=d*cos(anew):ay=d*sin(anew)
          cc=sect(x,y)
          rect cx+ax*i*dx,cy+ay*i*dy step i*dx,i*dy filled
        end if
      next
    next
    ra+=1
    ra=ra%360
    showpage
    delay 10
  next
end

Nope it was from here: http://retrogamecoding.org/board/index.php?topic=439.0

I sped up the display, in the above code. Very appropriate for this thread. :)
Title: Re: Welcome to the SmallBASIC board
Post by: lettersquash on February 11, 2019, 02:02:04 AM
Yeah, sorry I forgot to say where the code was I was referring to.  ::) ...neat.
Title: Re: Welcome to the SmallBASIC board
Post by: chrisws on February 12, 2019, 09:52:03 AM
Hi lettersquash,

Welcome to the forum!

> Would it be worth changing the name to avoid the confusion?
I'm not completely averse to that idea, but I'm not sure what Nicholas thinks about it. I guess if someone said, here's a new name, new icon, new marketing stuff along with some legal protection for the name - we probably wouldn't say no.

> One thing I'm puzzled about is the different files in the installation. sbasicg.exe and sbasicg64 are presumably 32-bit and 64-bit versions, are they?
Yes 32 and 64 bit variations. There are potential issues with large floating point numbers in the 32 bit build. Good to hear the 64 bit one is working for you, so just use that one. The web server version executes requested .bas files then returns the results using javascript graphics commands.  The other exe is a command line version. Just use what works and ignore the rest.

I made a "getting started" section on the android page, This more or less also applies to the desktop version:

https://smallbasic.github.io/pages/android.html

Cheers,
Chris
Title: Re: Welcome to the SmallBASIC board
Post by: lettersquash on February 12, 2019, 12:14:27 PM
Hi Chris, thanks for your welcome message. That "gettting started" page is brilliant and was needed - I found most of the setting up bits out by trial and error, but without it many non-techy types (not that I'm an expert) might give up and uninstall and lose all the sb goodness from their device! I can't wait to try out the android services - I didn't know how to use those. I also didn't know about avoiding working in the app's directory - I'll move my files. I think this was probably in another part of the help files I read, but I didn't quite take it in and I've not done much with the Android system before. Now I've got used to the IDE, it's pretty cool, and if that's also written in sb, I guess I could tweak it if I want to.

I can't thank you enough for this great piece of coding (with a nod, of course, to previous coders and helpers). As I said, it's rare for me to keep going with JABs, "Just Another BASIC", but sb seems very well designed. I've found it to be a good compromise between "easy for the noob" and "actually better protocol". Some BASICS go too far towards a very lax syntax, making it easy to write, but then they waste massive resources on memory blocks or parsing so that the user doesn't have to be careful.

But I'm a noob in this. Your code in that Wavefunction Collapse thing made me realise how far there is to go!

Thanks for the clarification on the different files,
¬~