QB64.org Forum
Active Forums => Programs => Topic started by: SMcNeill on January 08, 2020, 07:53:44 am
-
I know there's several folks out there who still like (and need) to code certain projects in the old QB64-SDL version for various reasons, so I thought I'd spend a little time and effort in 2020 and see about updating the old version so that it'd match the v1.3 capabilities as much as possible.
So far, this is my start on that journey: https://github.com/SteveMcNeill/QB64-SDL.git
Changes/enhancements so far:
Minor coloring in the IDE, mainly to help highlight quotes, remarks, and metacommands.
Addition of all the various math commands which SDL was missing. _PI, all the extended trig functions, the degree to radian to gradian conversion functions (, and a few others.
A few bug fixes for various things already.
A whole new math evaluator to be used with CONST -- this one even surpasses the current capabilities of what's now in QB64-GL v1.3! (At least, until I test it several times, make certain it's not going to break anything, and swap it in as a replacement.) You can try it out and view it independently here: https://www.qb64.org/forum/index.php?topic=1555.msg112989#msg112989
The code has been cleaned up and formatted to be a lot more readable (especially the c code).
_LOADFONT has been modified so that it now behaves like the GL version for Windows. Instead of immediately tossing an error message if a path is left off the fontname, it now will take a moment to look in "C:\WINDOWS\FONTS\" to see if the font in question is located there for use.
OPEN file$ FOR BINARY now works with LINE INPUT, rather than tossing an error as it did. This has been brought up to QB64-GL standards.
The config file has now been made externally available and changeable, with more options available for IDE customization.
The antiqued help system has been removed, and all references to [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there] should now be gone from QB64-SDL. Instead, we now correctly download and get updates from the official qb64.org wiki.
Swapped default behavior for the Run and Run (Detached) commands -- they're now Run and Run (Locked). Run will compile and run your program independent of the IDE. Run (Locked) will lock the IDE until it compiles and you finish running the program.
List of commands currently added are:
_D2R
_R2D
_D2G
_G2R
_R2D
_R2G
_PI
_ATAN2
_ASIN
_ACOS
_SINH
_COSH
_TANH
_ASINH
_ACOSH
_ATANH
_CEIL
_HYPOT
_ARCSEC
_ARCCSC
_ARCCOT
_SECH
_CSCH
_COTH
_SEC
_CSC
_COT
_INSTRREV
_STRCMP
_STRICMP
_AUTODISPLAY (function)
_WINDOWHANDLE
_WINDOWHASFOCUS
SELECT EVERYCASE
_CWD$
_STARTDIR$
_KEYCLEAR
_CAPSLOCK
_NUMLOCK
_SCROLLLOCK
_CAPSLOCK (function)
_NUMLOCK (function)
_SCROLLLOCK (function)
_SHL
_SHR
_SETBIT
_READBIT
_TOGGLEBIT
_RESETBIT
_TRIM$
_DESKTOPWIDTH
_DESKTOPHEIGHT
Other changes, commands, and enhancements to come as time and motivation allow. If there's a feature/command which you really would like to see, or need, in the SDL version, mention it to me and I'll try to add those requested capabilities first.
It's a start, but it still has a long ways to go... ;)
As I mentioned above (but I'll repeat the link here to save someone some scrolling), these changes can all be found and tracked here: https://github.com/SteveMcNeill/QB64-SDL.git
And a list of commands which hasn't been implemented yet in the SDL version, for quick reference:
_ACCEPTFILEDROP
_ALLOWFULLSCREEN
_ASSERT
$ASSERTS
_BLINK
_BLINK (function)
_CLIPBOARDIMAGE (function) pastes an image from the clipboard into a new QB64 image in memory.
_CLIPBOARDIMAGE (statement) copies a valid QB64 image to the clipboard.
$COLOR
_COMMANDCOUNT
_CONNECTED
_CONSOLETITLE
_CONTINUE
_DEFLATE$
_DEPTHBUFFER
_DIR$
_DISPLAYORDER
_DROPPEDFILE
$ELSE
$ELSEIF
$END IF
$EXEICON
_FINISHDROP
$IF
_INCLERRORFILE$
_INCLERRORLINE
_INFLATE$
$LET
$NOPREFIX
OPTION _EXPLICIT
_PRINTSTRING (doesn't work in SCREEN 0)
$RESIZE
_RESIZE
_RESIZE (function)
_RESIZEHEIGHT
_RESIZEWIDTH
_SCREENEXISTS
_SCREENICON (function)
_SCREENICON (statement)
_TITLE$ (function)
_TOTALDROPPEDFILES (function)
$VERSIONINFO
$VIRTUALKEYBOARD
NOTE: This may not be the complete list of every command which is missing, or every syntax which isn't 100% compatible. This is a list of things which I'm certain won't work currently, and it's up for modification at any time as I implement these missing segments, or find other things which should work but don't, for us.
-
I wished Rob would have renamed the SDL version QuickBASIC64. It was the closet thing we had to QuickBASIC. I still recall TheBOB had to change a small amount of code in his cake routine, to stop some color bleed issue when he ran it on GL. I experienced the same problem with my graphics GUI routine, but I never did debug it to find out why GL handled the display slightly differently.
I think SDL compiled into smaller executable programs, but the downside was you could only run thiem in the same folder as the dependency libraries. GL comiles those libraries in the project, making the finished product a stand alone exe. That's the way I recall it, but it's been awhile, and maybe I'm mistaken. I also recall SDL compiled faster, but Rob got the GL compilation down after a few revisions. Since you're working with it, do you have a quick list of advantages / disadvantages between the two? Obviously GL offers 64-bit compiling (I believe you produced that GL version), more keywords, the addition of adding libraries, etc. I also wonder what the new SDL interface would have added, if Rob had waited for it to be released? The licensing, I recall, was also different. I thought SDL was a bit less restrictive.
Anyway, thanks for your efforts to keep the good ship SDL afloat, and good luck with the additions to the upcoming new and improved version. When it's ready to sail, I'll download a copy. Hopefully, I'll be among the many here who can say... "Hey that guy Steve finally got his ship together!"
Pete
-
It was the closet thing we had to QuickBASIC.
Pete
You need to come out of the closet, Pete!
-
I know there's several folks out there who still like (and need) to code certain projects in the old QB64-SDL version for various reasons
Really? I know that I was very resistant to giving up SDL at first, but once you move up everything is backward-compatible with a few tweaks if necessary? But if Pete has tried with problems there must be some things that don't convert (seems odd but then I'm very limited in what statements I know and use).
-
What does SDL have that GL doesn’t? Working fonts, correct keyhit codes, working _DEVICES support, the ability to PRINT to TCP/IP, 256 color image support, more image formats and better sound. (Current is: WAV, OGG or MP3 file types. SDL supports those plus AIFF, RIFF, VOC, MOD and MIDI.)
What does GL have that SDL doesn’t? Several years of development, adding multiple new commands and functions. 32 and 64-bit versions. Open GL support (though I’ve never actually seen it used for anything more than a few minor demos). Hardware images and an enhanced IDE with more customization capabilities. Stand-alone EXE support, and a majority user base which can help with any questions or problems which might arise while using it.
-
Really? I know that I was very resistant to giving up SDL at first, but once you move up everything is backward-compatible with a few tweaks if necessary? But if Pete has tried with problems there must be some things that don't convert (seems odd but then I'm very limited in what statements I know and use).
Several things I can think of immediately that would make converting hard up hard to do:
Use of 256 color images, or SCREEN 13.
Use of _DEVICES to handle input needs.
Use of _MEM. (As SDL had a depreciated MEM.TYPE structure, different from the GL version.)
Use of various image/sound formats.
Use of PRINT/INPUT with TCP/IP stuff.
Fonts may need converting if BOLD, ITALIC, UNDERLINE was used.
-
You need to come out of the closet, Pete!
Closet, Closest... Huh, my "s" is missing!Well, that was embarras-s-ing. Why didn't someone hand my s?
Pete :D
-
It's worth noting that QB64 used SDL 1.2, the licensing of which made it unsuitable for static linking.
The most recent version is SDL 2, which is more freely licensed.
-
It's worth noting that QB64 used SDL 1.2, the licensing of which made it unsuitable for static linking.
The most recent version is SDL 2, which is more freely licensed.
Which doesn't matter at all IMHO. I remember the licensing was one of the big points back then, when QB64 was moved from SDL to GL. But for real, be honest, how many projects have you seen since 2012, which really required the static linking (ie. distributed in one binary file form only), not even one. Every coding happening here in the forum provides source code, and everybody who likes to use it has his own installation of QB64 and can compile the sources by himself.
-
hat does SDL have that GL doesn’t? Working fonts, correct keyhit codes, working _DEVICES support, the ability to PRINT to TCP/IP, 256 color image support, more image formats and better sound. (Current is: WAV, OGG or MP3 file types. SDL supports those plus AIFF, RIFF, VOC, MOD and MIDI.)
Exactly. Whoever says what he wants and thinks what he wants about me, but the absence of some music formats in version 1.3 really annoys me. I even think Galleon was going to make RAW audio data available with the _SNDRAWOPEN command. This command does not make sense as it is written, because the sample rate changes when you use two of these commands in succession for the same audio channel. I spoke to [banned user] about this two years ago, apparently there was a way to make RAW audio data available. Basically, I'm talking about the equivalent of MEM but for sound. I would be absolutely thrilled away if this were done.
And just a question. Why doesn't version 1.3 use LOADIMAGE (image, 256) internally as a 32-bit image and then convert it (dithering) and place the image on a 256-color screen?
-
And just a question. Why doesn't version 1.3 use LOADIMAGE (image, 256) internally as a 32-bit image and then convert it (dithering) and place the image on a 256-color screen?
As far as I remember it was tried to do it that way, back in v1.1 (think Fellippe did), but it didn't turn out very well by testing with several different image formats, so it was removed/disabled again until a better workaround will be available, which obviously didn't happen 'til now.
That's why I built in my own Floyd-Steinberg dithering routine into GuiTools, which was also adapted for Steve's SaveImage library v2.1 last year.
-
Next step forward has been taken with regards to QB64-SDL 2020:
The code has been cleaned up and formatted to be a lot more readable (especially the c code).
_LOADFONT has been modified so that it now behaves like the GL version for Windows. Instead of immediately tossing an error message if a path is left off the fontname, it now will take a moment to look in "C:\WINDOWS\FONTS\" to see if the font in question is located there for use.
FUNCTION _AUTODISPLAY has been added.
FUNCTION _WINDOWHANDLE has been added.
FUNCTION _WINDOWHASFOCUS has been added.
Modifying things to bring SDL up to become more GL compatible is now starting to slow down, as several of the commands which need converting are wrote using openGL libraries. I have to take time to hunt down the difference between SDL and GL, find the SDL replacement routine to GL, and then plug it in and test to make certain it's working as intended.
-
Hi Steve,
I could bring in my fix to _COPYIMAGE/_FREEIMAGE glitch and the &B binary string enhancement done lately. However as you have reformatted libqbx.cpp and qbx.cpp the WinMerge comparisation gives me diffs on almost every line and it's hard to spot my additions to the code anymore. Ie. I'd need to reformat my files too first to match your format, did you make the changes manually (guess not) or which program/online service did you use to do so?
I usually use this service http://format.krzaq.cc/ with the google style formatting, you paste code, click to format and then copy the formatted code back. Unfortunatly it can't reformat the whole file at once, so I usually only reformat the functions I work on.
-
Hi Steve,
I could bring in my fix to _COPYIMAGE/_FREEIMAGE glitch and the &B binary string enhancement done lately. However as you have reformatted libqbx.cpp and qbx.cpp the WinMerge comparisation gives me diffs on almost every line and it's hard to spot my additions to the code anymore. Ie. I'd need to reformat my files too first to match your format, did you make the changes manually (guess not) or which program/online service did you use to do so?
I usually use this service http://format.krzaq.cc/ with the google style formatting, you paste code, click to format and then copy the formatted code back. Unfortunatly it can't reformat the whole file at once, so I usually only reformat the functions I work on.
I just used Visual Studio’s 2019 built in Format and let it do the spacing for me. Feel free to do what you need to, to help highlight the changes for you. You can copy the current code into krzag.cc and format it to match your current style for comparison, if you want. Or, if it’s easier, make the changes with an older version (or even the original version of SDL 0.954), and I can use WinMerge, or a similar comparison tool, to highlight where to add the changes into the upgraded SDL version. ;)
-
Pushed fix to OPEN file FOR BINARY so that it now works with LINE INPUT as it currently does in QB64-GL.
Cleaned up some more of the code to remove further references to the old SDL update procedure. Back in the day, SDL used to call up [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there], see if a newer version of itself existed, and then, if so, upgrade itself for us. Now, however, [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there] is a hacker's site -- Galleon no longer maintains it and nobody knows who the crap registered it and put it back up on the net -- so it's not a place that one wants to visit ever. Going there isn't going to update crap -- it'll just lock up the update process as it freezes waiting for a non-existent response to come back to it -- and there's no reason to give that bogus site your IP address, or anything else.
-
Cleaned up some more of the code to remove further references to the old SDL update procedure. Back in the day, SDL used to call up [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there], see if a newer version of itself existed, and then, if so, upgrade itself for us. Now, however, [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there] is a hacker's site -- Galleon no longer maintains it and nobody knows who the crap registered it and put it back up on the net -- so it's not a place that one wants to visit ever. Going there isn't going to update crap -- it'll just lock up the update process as it freezes waiting for a non-existent response to come back to it -- and there's no reason to give that bogus site your IP address, or anything else.
If it is so, then
a) the complete wiki should be searched for links to that site and those links removed; I had one some days/weeks ago
b) this complete Forum should be searched for links to that site and those links removed; I am sure, I saw some links to that site in this forum
To know here are links to hacker-site(s) is no good feeling.
-
Hi Steve,
here are my fixes & additions to the SDL version, see changes.txt in the archive for more details...
EDIT: Download removed, all changes are incorporated into the QB64-SDL 2020 version now, so the provided files should no longer be mixed up with the files from Steve's repository.
-
It took a bit to sort it all out, but I ended up pushing all of Rho's changes into the SDL version. ;)
>> added support for full path specification in DECLARE LIBRARY
- interestingly it was already implemented for the Linux version,
but not for Windows
>> added my code for array_check() handling, so that it is waived to
whenever $CHECKING:OFF is in effect
Changes in libqbx.cpp:
----------------------
>> fix for the unreliable string compare routines - these I've simply replaced with the correct functions from the v1.2 (probably still the same in v1.3)
>> addition for &B prefix in INPUT(#), DATA and VAL
>> fixed the cmd lines for SHELL calls (added 0-termination) - this was discussed at [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there] back in 2010-2012??, it could lead to failure of the SHELL call, or random data (mostly an console error) was written into internal\c in a file which its name was actually the command which was SHELLed out - this happend, as a basic string was used instead of a c-string, AFAIK its replaced by c-strings in the current GL versions
>> fix for the _MEMIMAGE/_COPYIMAGE/_FREEIMAGE memory lock issue - see BUGS board at qb64.org
(The process was more than a little difficult simply because I think Rho might have used the modern libqb.cpp to highlight his changes?? The libqb.cpp which was in his file was about 1,500kb in size, whereas the SDL version of libqbx.cpp is only about 1,000 kb in size -- the difference of which highlights how much the language has grown and expanded since SDL was retired and last updated!)
There's still a long ways to go to help bring the SDL version back up to being as interchangeable as possible with the GL version, but I think we're well on the way to moving forward to getting there! :D
-
Hi Steve,
glad you sorted out things to add.
Actually I used your SDL libqbx.cpp from your mentioned SDL GitHub repo and my SDL libqbx.cpp. But to be able to merge my fixes and additions in, I needed both files in the same format first, as yours was Visual Studio formatted and my was Galleon formatted (i.e. in fact unformatted), so I converted both files with clang-format (from the LLVM package) using the following command line
clang-format --style=Microsoft -i libqbx.cpp
This process caused a small increase in size, as it did split many single line IFs into multi line IF blocks, but the main reason for the increase is probably because the file from your repo had Unix style line endings which I converted to Windows line endings when saving the merged version of both files :)
The only thing I've copied 1:1 from the modern libqb.cpp are the fixed string compare routines.
-
Pushed fix to OPEN file FOR BINARY so that it now works with LINE INPUT as it currently does in QB64-GL.
Glad I saw this little nugget. Binary open for line input works way faster than input mode does.
-
Hooray! I love it having that faster LINE INPUT routine, too!
Pete
-
Hooray!
Pete
Why "Hooray!", you should keep in ICONIC character (Yosemite Sam)
Better line would have been. “All right now ya wise guy … Dance!”
-
Eat lead ya lily-livered horny toad! If I'd wanted yar carnsarn o-pin-ee-on, I'd ov askt fur it!
- Sam
-
It's funny how things have to be added to the source one step after the other, as each is basically a building block which the next changes rely on. :D
Since OPEN file$ FOR BINARY now works with LINE INPUT, I was finally able to swap in the modern "Steve's Config File System", which QB64-GL uses -- but it's only partially implemented at the moment.
Currently only the Display width/height and custom font name/size are using the new config setting system, but I plan on swapping everything else out, over the course of the next few days, but the framework is there now so it's just a simple matter of implementing all the changes as time allows. ;)
Some options will take longer to implement than others, as the building blocks they rely on aren't a part of SDL yet, but I'll get them in there in time. Just don't expect any of the following options to work for a bit, as these are the ones which SDL has no implementation to work with, until it's added:
MultiHighlight = TRUE
KeywordHighlight = TRUE
BracketHighlight = TRUE
ShowLineNumbersUseBG = TRUE
ShowLineNumbersSeparator = TRUE
ShowLineNumbers = TRUE
ShowErrorsImmediately = TRUE
EnableQuickNav = TRUE
PasteCursorAtEnd = TRUE
AllowIndependentSettings = FALSE
-
Popping in to say hello QB64 friends, and also thanks for revisiting the SDL version, Steve! Downloading it now. One BIG advantage to me with SDL over GL is that SDL compiled EXE's can run on my Windows boot disks, whereas GL's EXE's don't.
Belated Merry Christmas and Happy New Year (for the last year too!).
- Dav
-
Popping in to say hello QB64 friends, and also thanks for revisiting the SDL version, Steve! Downloading it now. One BIG advantage to me with SDL over GL is that SDL compiled EXE's can run on my Windows boot disks, whereas GL's EXE's don't.
Belated Merry Christmas and Happy New Year (for the last year too!).
- Dav
Just be cautious you don’t stick with the current version Dav. I’m in the middle of swapping out the various options, so only about half of them are implemented yet. Yesterday’s version was before the swap started; in a few days, I’ll have a version with everything swapped over, but the current version is only partially finished.
-
Who's there? Dav! Hey, Dav's not here man...
T. C. :D
-
"... the cops are listening on the phone!"
"Hey man, did you forget the address? Write it down..."
"No! The cops are listening on the own-phay..."
-
Added the following as valid external config settings:
BackupSize
AllowIndependentSettings
AutoPosition
IDE_LeftPosition
IDE_TopPosition
TextColor
QuoteColor
MetaCommandColor
CommentColor
BackgroundColor
These settings are actually proving to be a little more of a PITA to implement than I'd have first imagined them to be. Since many things *just work* in SDL, and don't work natively in GL, we've had to go in and patch a lot of functionality into the code. (Case in point is using ALT and the number keys to generate extended ASCII/UNICODE characters -- the SDL libraries support it; our GL keyboard libraries don't.) A lot of these patches aren't necessary, and in fact, screw up with the normal SDL processes, so I can't just copy/paste these routines from one version of QB64 to the other. As such, I'm trying to keep things as consistent across versions, as possible, but there are some differences which are beginning to pop up:
When moving the IDE with Auto-positioning turned on, the position isn't actually updated until after you focus back into the IDE in SDL. This allows you to drag the IDE to the left or right, out of the way of another window (such as your web browser), close it, and then have it pop back up in its original position and not the last position where it was moved to. If you want it to pop back into that last position, simply click back inside the IDE and let it update itself to store that last position for you.
At the moment, I'm not going to try and implement ALL the color enhancements which the GL version has for us. I've added coloring for quotes, metacommands, comments, default text color, and the background, but no coloring for keywords or numbers. Both of these require a lot of code to be ported back and forth (along with a working keyword list), and neither are working 100% as they should in the GL version. For now, I've decided to just wait on trying to import these color options into SDL.
Next up on the working list is to add support for the following in the config settings:
IDE_AutoFormat
IDE_AutoIndent
IDE_IndentSize
SwapMouseButton
SaveExeWithSource
ShowErrorsImmediately
-
Busy day around the farm here today, so I didn't have a change to update much. I am trying to make at least a small change every day, to try and get the SDL version to mimic the same behavior as we see in the GL version, but all I got finished today was the ability to indent SUBs/FUNCTIONs in the IDE when auto-spacing is on.
Hopefully tomorrow will be a better day with a little more free time, but for now, it's still another small step forward. :P
-
Busy day around the farm here today, so I didn't have a change to update much. I am trying to make at least a small change every day, to try and get the SDL version to mimic the same behavior as we see in the GL version, but all I got finished today was the ability to indent SUBs/FUNCTIONs in the IDE when auto-spacing is on.
Hopefully tomorrow will be a better day with a little more free time, but for now, it's still another small step forward. :P
Maybe your luck will chance, tomorrow! :D
Pete
A typo a day keeps the proctor away.
-
Several little changes today:
Config File has been cleaned up so that it now only reflects the actual settings that are currently support and usable in the SDL version. (I'll add more options over time, but I'm back to the point where it seems I have to make other building blocks to continue moving forwards... ;D ) It currently looks like this:
'[CONFIG VERSION]
ConfigVersion = 1
'[GENERAL SETTINGS]
DebugInfo = FALSE 'INTERNAL VARIABLE USE ONLY!! DO NOT MANUALLY CHANGE!
BackupSize = 1000 'in MB
AllowIndependentSettings = TRUE
'[IDE COLOR SETTINGS]
TextColor = _RGB32(255,255,255)
QuoteColor = _RGB32(255,255,85)
MetaCommandColor = _RGB32(85,255,85)
CommentColor = _RGB32(85,255,255)
BackgroundColor = _RGB32(0,0,170)
'[IDE DISPLAY SETTINGS]
IDE_IndentSUBs = TRUE
IDE_CodePage = 0
IDE_CustomFont = FALSE
IDE_CustomFont$ = "c:\windows\fonts\lucon.ttf"
IDE_CustomFontSize = 21
IDE_AutoFormat = TRUE
IDE_AutoIndent = TRUE
IDE_IndentSize = 4
IDE_Height = 25
IDE_Width = 80
IDE_AutoPosition = TRUE
'[MOUSE SETTINGS]
SwapMouseButton = FALSE
Implemented the following settings so they're now working in both the IDE and the external config file:
IDE_AutoFormat
IDE_AutoIndent
IDE_IndentSize
SwapMouseButton
SELECT EVERYCASE now works in SDL as it does in the GL version. (I thought I'd made this change into the language ages ago! I would've sworn it was in SDL, but it's not! Who knew??)
Finally remembered to update my version number too. :P
-
Finally removed the last of the old config file out of the SDL version. Everything that it used to do, we now can handle and work with externally with the new config file system.
A nice big change:
The SDL help files no longer attempt to dial up to [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there] and download information from the web. All the internal routines (as well as the help files) have been swapped out and now work with the QB64.org wiki (the one we all know and love from the official Qb64 site here).
NOTE: This gives us help support for commands which SDL doesn't actually support (like all the _gl commands which only work with openGL), but I figure that's a much better option than trying to dial out to some unknown website and downloading who-knows-what onto someone's PC. It also keeps the help files up-to-date to what the current syntax is, rather than the veeeeery old and outdated information which was packaged with the last SDL-version 0.954 many years back.
Help is once again, in my opinion at least, helpful to use now in SDL.
-
Closet, Closest... Huh, my "s" is missing!Well, that was embarras-s-ing. Why didn't someone hand my s?
Pete :D
Clearly, Pete has gotten off his S
-
Actually, I'm sitting on my S right now, reading this. I suppose I could state my S hasn't gotten off in years, but then we'd have to revisit that whole closet issue, again.
Great to have the ET phone home issue resolved. I had completely forgot about that little "gem."
Pete
-
With a little work, I've packaged up everything required so folks can download and install the updated SDL-2020 on Linux, for use, if they want. Grab it from my personal forums here: http://www.smcneill.online/mybb/thread-45.html
NOTE: The following libraries will need to be downloaded and installed with sudo apt-get install, before running the ./setup.sh script which comes with the QB64 SDL-2020 Linux version, if they're not already on your system.
libsdl1.2-dev
libsdl-image1.2-dev
libsdl-mixer1.2-dev
libsdl-net1.2-dev
libsdl-ttf2.0-dev
timidity
-
Swapped default behavior for the Run and Run (Detached) commands -- they're now Run and Run (Locked). Run will compile and run your program independent of the IDE. Run (Locked) will lock the IDE until it compiles and you finish running the program.
Added a few more commands into the toolset:
_CWD$
_STARTDIR$
_KEYCLEAR
-
Go Steve go!!!
Pete
-
Thanks, Steve! I downloaded the latest this morning. I needed to create a temp folder in the internal folder to run it without path errors first, but after that it's loading and compiling my BAS files.
- Dav
-
Thanks, Steve! I downloaded the latest this morning. I needed to create a temp folder in the internal folder to run it without path errors first, but after that it's loading and compiling my BAS files.
- Dav
Thanks for the report Dav. I’ll make a note of it for now so others will be able to work around the issue, and I’ll work on getting rid of the problem in future updates. 👍
-
GL comiles those libraries in the project,
sorry Pete but that is not true , it compile into home/core folder where is qb64.exe not into project folder
and looks to me slow.
-
Steve
I download sdl version from a given link and unpack content then
try to run qb64.exe ..and i get error
is that maybe fixed ..thanks!
-
Steve
I download sdl version from a given link and unpack content then
try to run qb64.exe ..and i get error
is that maybe fixed ..thanks!
Dav reported on that above: “ I needed to create a temp folder in the internal folder to run it without path errors first, but after that it's loading and compiling my BAS files.”
Apparently git is ignoring the internal/temp folder and not creating it for us (it needs at least a blank file in the directory to maintain the file structure, as git tries to clean/erase empty ones). I haven’t fixed that with the repo yet, but if you simply make an internal\temp folder, that should correct the issue for you, until I can fix a proper placeholder in the repo.
And if that doesn’t work, let me know, and I’ll definitely dig deeper to see what theissue may be, andthen report back for you.
-
It is interesting that new QB64 versions use 7x more CPU for empty IDE window (200x70):
QB64 v1.4: 27-44% CPU
Steve SDL Update: 4-7% CPU
(Windows 10 32-bit on dual core Athlon 64 X2 5600+, GeForce 210)
-
Hi Steve
I haven’t fixed that with the repo yet, but if you simply make an internal\temp folder, that should correct the issue for you, until I can fix a proper placeholder in the repo.
If I understand you properly
I must create folder called temp , is that all?
i mean for now to see IS work or not ?
-
Steve
In this internal folder is subfolder called temp2
and inside this folder is only one file called temp.bin
so do i can copy/paste from 1.3 version transfer all files to temp2 folder to get it work.
If that work that would be nice.
..and for Davor ...yes that new 1,3 versiojn
-
Steve
In this internal folder is subfolder called temp2
and inside this folder is only one file called temp.bin
so do i can copy/paste from 1.3 version transfer all files to temp2 folder to get it work.
If that work that would be nice.
..and for Davor ...yes that new 1,3 versiojn
All you should need to do is make a directory called temp inside the internal folder. :)
Or, download the latest version of the repo, as it should have this issue fixed for us.
-
Hello Steve
Ok,what I'm do is , i simply copy whole temp folder from 1.3 gl version into
( which is by the way too slow for my taste)
... internal folder of your SDL version and voila i get qb64 ide runing.
So now i can test it with my editor finally...
I hope that should work ..
..well i need to find documentation about command line switches for ShellExecute()
-
Interesting thing all Mark.s bPlus programs work but many other presented here not .hmmm
ok i think i found it ,so i am going to implement in my editor,i hope that soon i can post more about that,i need some
internal bug fixing and modification for qb64 to work properly.
see ya
here's what I have from those scripts:
qb64 -c -o outputfilename inputfilename
switches
-o output exe filename
-c Compile file
-x As -c, but use the console instead of a graphical window for pr>
-z Do not compile generated C++ code.
-q Compile for Qloud.
-g Do not include graphics runtime (equivalent to $CONSOLE:ONLY)
All switches imply -c; -z and -q imply -x.
Options must proceed the filename.
-- can be used as a dummy option to force the next thing to be a file
-
Interesting thing all Mark.s bPlus programs work but many other presented here not .hmmm
ok i think i found it ,so i am going to implement in my editor,i hope that soon i can post more about that,i need some
internal bug fixing and modification for qb64 to work properly.
see ya
SDL development was stopped 3 or 4 years ago, so any program that uses keywords/functions added to the language since that time won’t work, until I catch the two languages up and correct all those inconsistencies that I can. Already, I’ve expanded SDL with about 40 new keywords, updated the IDE color system somewhat, and fixed the help file system. The config system has been ripped out and replaced, allowing externally alterable settings and multiple configurations per IDE instance, and we no longer try to dial back to the defunct [abandoned, outdated and now likely malicious qb64 dot net website - don’t go there] site for updates. All in all, I wouldn’t call that a bad start in bringing SDL back up to speed with the current GL version. ;)
Lots left to do, but I’m happy with the enhancements it has over the old 0.954 version already. ;)
-
thanks Steve
according to speed ..yes it is not that much faster..
i configure my editor to work with it , compile work fine with -c
open created exe file not work with -o , simply because compiled exe is not created in the same folder where is the
source code of program..so that is why not work.
As i already reply to Pete , same thing not work in last version 1.3 gl
i really don't know which version he use that this work for him ???
-
A current list of commands which (I believe) won't work in SDL, that currently work in the GL version, so folks can use this for quick reference on what they may want to exclude from their toolset when programming the the SDL version:
_ACCEPTFILEDROP
_ALLOWFULLSCREEN
_ASSERT
$ASSERTS
_BLINK
_BLINK (function)
_CAPSLOCK (function)
_CAPSLOCK (statement)
_CLIPBOARDIMAGE (function) pastes an image from the clipboard into a new QB64 image in memory.
_CLIPBOARDIMAGE (statement) copies a valid QB64 image to the clipboard.
$COLOR
_COMMANDCOUNT
_CONNECTED
_CONSOLETITLE
_CONTINUE
_DEFLATE$
_DEPTHBUFFER
_DESKTOPHEIGHT
_DESKTOPWIDTH
_DIR$
_DISPLAYORDER
_DROPPEDFILE
$ELSE
$ELSEIF
$END IF
$EXEICON
_FINISHDROP
$IF
_INCLERRORFILE$
_INCLERRORLINE
_INFLATE$
$LET
$NOPREFIX
_NUMLOCK (function)
_NUMLOCK (statement)
OPTION _EXPLICIT
_PRINTSTRING (doesn't work in SCREEN 0)
_READBIT
_RESETBIT
$RESIZE
_RESIZE
_RESIZE (function)
_RESIZEHEIGHT
_RESIZEWIDTH
_SCREENEXISTS
_SCREENICON (function)
_SCREENICON (statement)
_SCROLLLOCK (function)
_SCROLLLOCK (statement)
_SETBIT (function)
_SHL (function)
_SHR (function)
_TITLE$ (function)
_TOGGLEBIT (function)
_TOTALDROPPEDFILES (function)
_TRIM$ (function)
$VERSIONINFO
$VIRTUALKEYBOARD
-
Imported several of the missing commands from my previous post into the SDL version. We now have support for:
_CAPSLOCK
_NUMLOCK
_SCROLLLOCK
_CAPSLOCK (function)
_NUMLOCK (function)
_SCROLLLOCK (function)
_SHL
_SHR
_SETBIT
_READBIT
_TOGGLEBIT
_RESETBIT
_TRIM$
(That now puts QB64 SDL 2020 at having 50 of the new commands which 0.954 didn't support, and 46 more on the list to go. I'm over half done, it seems! Too bad I have a feeling that this was the easy half...)
-
Cool. Thank you for doing this!
- David
-
Cool. Thank you for doing this!
- David
Happy to do it. As people download and test it out, they can help point out any of the little changes which I’ve overlooked. Some of the missing commands, I’m not certain if I can reimplement at all, as they use GL libraries for us (such as the $RESIZE commands), but I’ll do what I can. ;D
-
Conversion is slowing down as I'm now to the point where I'm having to hunt down SDL methods to do the things which do using GL routines, but I'm still plugging along at my own slow pace as I sort this stuff out...
_DESKTOPWIDTH and _DESKTOPHEIGHT were added into SDL today, taking 2 more keywords off the incompatible list for us. I think at this point, there's only about 30 to go (not counting that whole slew of _gl keywords, which we'll never see converted over for use -- well, at least never converted over *by me*, I'm certain).
Commands still not implemented are:
_ACCEPTFILEDROP
_ALLOWFULLSCREEN
_ASSERT
$ASSERTS
_BLINK
_BLINK (function)
_CLIPBOARDIMAGE (function) pastes an image from the clipboard into a new QB64 image in memory.
_CLIPBOARDIMAGE (statement) copies a valid QB64 image to the clipboard.
$COLOR
_COMMANDCOUNT
_CONNECTED
_CONSOLETITLE
_CONTINUE
_DEFLATE$
_DEPTHBUFFER
_DIR$
_DISPLAYORDER
_DROPPEDFILE
$ELSE
$ELSEIF
$END IF
$EXEICON
_FINISHDROP
$IF
_INCLERRORFILE$
_INCLERRORLINE
_INFLATE$
$LET
$NOPREFIX
OPTION _EXPLICIT
_PRINTSTRING (doesn't work in SCREEN 0)
$RESIZE
_RESIZE
_RESIZE (function)
_RESIZEHEIGHT
_RESIZEWIDTH
_SCREENEXISTS
_SCREENICON (function)
_SCREENICON (statement)
_TITLE$ (function)
_TOTALDROPPEDFILES (function)
$VERSIONINFO
$VIRTUALKEYBOARD
-
_DESKTOPWIDTH and _DESKTOPHEIGHT were added into SDL today, taking 2 more keywords off the incompatible list for us. I think at this point, there's only about 30 to go (not counting that whole slew of _gl keywords, which we'll never see converted over for use -- well, at least never converted over *by me*, I'm certain).
_DESKTOPWIDTH and _DESKTOPHEIGHT were commands that I've been hoping for, awesome that they're included now. :-)
-
Thank you very much for this piece of work to bring the SDL version into the 2020's Steve!
-
Hi Steve,
any chance that we see the pre-compiler meta commands added at some point in the future?
-
Hi Steve,
just released a new version of my GuiTools Framework.
Before I release things, I usually check if they properly compile in the historical SDL 0.954 version and the latest stable new GL versions of QB64 (both, 32/64 bits).
This time I added your SDL 2020 updated version from your repo in my testing chain for the 1st time and found that the IDE will crash after a few seconds when syntax checking any loaded GuiTools application (from the src_XXX folders). As far as I could find out, it must be some recursion bug in the $INCLUDE handling, because if I paste the include's contents into the sources (in place of the $INCLUDE lines) to put everything together in one big file, then it works fine and the programs will also properly compile.
Maybe you can have a look at this, if your time allows, no need to hurry...
-
Hi Steve,
just released a new version of my GuiTools Framework.
Before I release things, I usually check if they properly compile in the historical SDL 0.954 version and the latest stable new GL versions of QB64 (both, 32/64 bits).
This time I added your SDL 2020 updated version from your repo in my testing chain for the 1st time and found that the IDE will crash after a few seconds when syntax checking any loaded GuiTools application (from the src_XXX folders). As far as I could find out, it must be some recursion bug in the $INCLUDE handling, because if I paste the include's contents into the sources (in place of the $INCLUDE lines) to put everything together in one big file, then it works fine and the programs will also properly compile.
Maybe you can have a look at this, if your time allows, no need to hurry...
I'll dig into the issue in a couple of weeks, since it doesn't seem to be a rush problem. :)
For now, I'm still swamped with getting everything transferred over to the new PC from the old one, and I'm working on upgrading and debugging the SaveImage library. After that, I'm going to try and spend a few weeks to catch up on what I've missed on the forums and maybe see about sorting out the current version of the perpetual CONST glitch which plagues us.. SDL-2000 should be on the list of things to do after that, and I'll try and sort out what's off with the $INCLUDEs at the same time I add in the precompiler $IF support for us. :)
-
I'll dig into the issue in a couple of weeks, since it doesn't seem to be a rush problem. :)
A couple weeks sounds good to me, will need at least the same amount of time until I've the next GuiTools release ready for testing :)