Open Forum > What's New
ScriptBasic - Raspberry Pi
Support:
I'm pleased to announce a release of ScriptBasic for the Raspberry Pi. You can do a traditional install with a .deb file or as an AppImage
This version of the binaries do NOT work on the Raspberry Pi Zero.
(Requires ARM v7 or greater)
DEB Install:
--- Code: Bash ---sudo apt install ./scriptbasic-2.1-linux-armhf.deb
DEB Uninstall:
--- Code: Bash ---sudo apt remove scriptbasic-2.1-linux-armhf
To run a script use scriba <script nane> when using the DEB Install.
To use the AppImage version ScriptBasic, unzip the file in the /usr/local/bin (or a directory in the system path) and use sb <script_name> to run your scripts. To remove ScriptBasic, remove the sb file.
I have added scriptbasic-rpi-zero.deb as an attachment. This version will run on ALL versions of the Raspberry Pi where the scriptbasic-2.1-linux-armhf.deb and AppImage versiosn will only run on the ARM v7 versions of the boards. The same instructions apply just change the name of the .deb file.
ScriptBasic User and Developer Guides
Most of the ScriptBasic development activity is happening on the All BASIC Forum.
Language Features
[*] Tradional BASIC syntax
[*] Variant style variables (no definition or declaration needed)
[*] Indexed, associative arrays (or combo of both) no practical limits
[*] Muilt-threaded - asynchronous / synchronous execution
[*] Unlimited seamless expansion via the extension API
[*] Embeddable API
[*] Footprint less than 800 KB
[*] Runs on everything with a single source tree (written in ANSI C)
[*] Application proxy web server that runs ScriptBasic code
[*] Cascading pre-processor support
[*] Debugger with single step execution, break points and more
[/list]
Extension Modules
[*] libcurl + SSL
[*] MySQL
[*] SQLite
[*] ODBC
[*] json
[*] XML
[*] regex
[*] CGI
[*] zlib
[*] SBT - thread support
[*] IUP - cross platform portable GUI
[*] SDL_gfx graphics primatives with alpha channel support
[*] BBC BASIC graphic library
[*] more ..
[/list]
Free - Open Source - MIT License
Raspberry Pi Downloads Attached
Support:
I was able to get the BBC BASIC graphics extension module working on the Raspberry Pi.
--- Code: Script BASIC ---' UFO IMPORT bbc.bas BBC::OPEN "ScriptBasic BBC UFO - Raspberry PI"t1 = BBC::TIME()BBC::MODE 31BBC::ORIGIN 800, 600xs = 2ys = 2BBC::GCOL 0, 14BBC::OFFa = 700b = A * Ac = 600FOR x = 0 TO a STEP xs s = x * x p = SQR(b - s) FOR i = -p TO p STEP 6 * ys r = SQR(s + i * i) / a q = (r - 1) * SIN(24 * r) y = INT(i / 3 + q * c) IF i = -p THEN m = y n = y END IF IF y > m THEN m = y IF y < n THEN n = y IF m = y OR n = y THEN BBC::PLOT 69, NOT(x), y BBC::PLOT 69, x, y END IF NEXTNEXTt2 = BBC::TIME()t3 = (t2 - t1) / 1000BBC::OFFBBC::VDUSTR "Time: " & FORMAT("%.4f", t3) & " seconds."WHILE BBC::KEYNAME(1) <> "-escape"WENDBBC::CLOSE
Support:
Here is the Fren example.
--- Code: Script BASIC ---' Fern IMPORT bbc.bas BBC::OPEN "ScriptBasic BBC fern - Raspbery Pi"t1 = BBC::TIME()BBC::MODE 31BBC::ORIGIN 200, 100BBC::OFFBBC::GCOL 0, 10x = 0y = 0FOR i = 1 TO 80000 r = BBC::RND(1) IF r <= 0.1 THEN a = 0 b = 0 c = 0 d = 0.16 e = 0 f = 0 END IF IF r > 0.1 AND r <= 0.86 THEN a = .85 b = .04 c = -.04 d = .85 e = 0 f = 1.6 END IF IF r > 0.86 AND r <= 0.93 THEN a = .2 b = -.26 c = .23 d = .22 e = 0 f = 1.6 END IF IF r > 0.93 THEN a = -.15 b = .28 c = .26 d = .24 e = 0 f = .44 END IF newx = a * x + b * y + e newy = c * x + d * y + f x = newx y = newy BBC::MOVE 600 + 96 * x, 32 + 96 * y BBC::DRAW 600 + 96 * x, 32 + 96 * yNEXT it2 = BBC::TIME()t3 = (t2-t1)/1000BBC::VDUSTR "Time: " & FORMAT("%.4f",t3) & " seconds"BBC::WAITKEYBBC::CLOSE
Support:
Finally the graph example. Hopefully other BBC BASIC fans will contribute examples as well.
--- Code: Script BASIC ---' Graph Demo IMPORT bbc.bas CONST SDLK_ESCAPE = 27 BBC::OPEN "ScriptBasic BBC graphdemo - Raspberry Pi"t1 = BBC::TIME()BBC::MODE 31BBC::ORIGIN 800, 600xlow = -10xhigh = 10ylow = -10yhigh = 10depth = 10xscale = 30yscale = 12c = -4000 FOR x = xlow TO xhigh BBC::MOVE xscale * (x + ylow), yscale * (ylow - x) + c / (x * x + ylow * ylow + depth) FOR y = ylow TO yhigh BBC::DRAW xscale * (x + y), yscale * (y - x) + c / (x * x + y * y + depth) NEXTNEXTFOR y = ylow TO yhigh BBC::MOVE xscale * (xlow + y), yscale * (y - xlow) + c / (xlow * xlow + y * y + depth) FOR x = xlow TO xhigh BBC::DRAW xscale * (x + y), yscale * (y - x) + c / (x * x + y * y + depth) NEXTNEXTt2 = BBC::TIME()t3 = (t2 - t1) / 1000BBC::OFFBBC::VDUSTR "Time: " & FORMAT("%.4f", t3) & " seconds."WHILE BBC::GETKEY(1) <> SDLK_ESCAPEWENDBBC::CLOSE
Support:
For those not into the retro BBC BASIC graphics primitives, I ported the SDL_gfx extension module to the Raspberry Pi.
--- Code: Script BASIC ---' ScriptBasic GFX - Alpha Circles IMPORT gfx.bas scrn = gfx::Window(640, 480, "ScriptBasic GFX - Alpha Circles - Raspberry Pi")' Random Value ArraysRANDOMIZE(gfx::Time())FOR i = 0 TO 512 rx[i] = RND() % 640 ry[i] = 60 + RND() % 480 - 80 rz[i] = RND() % 64 rr[i] = RND() AND 255 rg[i] = RND() AND 255 rb[i] = RND() AND 255 af = rx[i] / 640 ra[i] = INT(255 * af)NEXT ts = gfx::Time()FOR i = 0 TO 512 gfx::filledCircleRGBA scrn, rx[i], ry[i], rz[i], rr[i], rg[i], rb[i], ra[i]NEXTte = gfx::Time()gfx::stringColor scrn, 20, 15, "Time: " & FORMAT("%.4f",(te-ts)/1000) & " Seconds." & CHR(0), 0xffffffffgfx::UpdateWHILE gfx::KeyName(1) <> "+escape"WENDgfx::Close
Navigation
[0] Message Index
[#] Next page
Go to full version