NEWS ARTICLES


    What's News in the PlayBasic world ? - Find out here.




 PlayBasic V1.65 - Building a Release:

By: Kevin Picone Added: September 22nd, 2016

Category: All,Upgrade,Update,Retail

PlayBasic V1.65 - Building a Release

    Unfortunately, real life has got in the way of PlayBasic development over the past month. While life is starting to get back on track, V1.65 development has taken a real back seat for the time being. While is frustrating for everyone, I would rather get a version of this out sooner, than later. So starting tonight I’ll be kicking into building a release version. Now this will mean it’ll have a few missing VM changes, but I feel they’ll take some time to perfect. So it’s probably best to get a version out there and find all the existing hiccups, before introducing another big change…

     Anyway, thanks for your patience and kick back and get coding… Just one bit at a time, that's all it takes





 PlayBasic V1.65 Beta Testing

By: Kevin Picone Added: August 15th, 2016

Category: All,Update,Upgrade,Beta testing,Retail

PlayBasic V1.65 Beta testing:

     Hopefully you’ve been following the development of PlayBasic V1.65 in the WIP thread on the forums, but for those that haven’t V1.65 is the introduction of the brand new, highly optimized virtual machine (VM) backend for the PlayBasic. The VM is the code that actually executes your program, so the faster it is the faster your programs execute.

     The replacement process has been a daily grind throughout our winter, but the I’m now extremely pleased to say that there is some very light at the end of the tunnel, with the project entering beta testing at the start of this month. With each passing day we’re replacing missing or fixing broken functionality and squashing it. Build 54 (Beta54) was released to the forums a matter of hour ago. So if want to help out test it, you can download it from the forums.


Why replace the PBVM now ?

     That’s valid question, as the existing back end works well enough, but the reasoning goes well behind functionality of the it, the problem with the V1.64 editions and older editions of PBVM is they don’t have static instruction sets. Now I know this sounds like gibberish to most people, but in simple terms what this means is that the internal codes between revisions of the PBVM are often different. Internally this doesn’t matter, but since we want to produce more add conversion tools like PB2DLL (Which is already released btw), then this can be nightmare to support. As changes to the PlayBasic compiler would break those tools..

     So really the motivation behind replacing all the PBVM is not actually speed (although it’s always nice to have more speed), it’s to make the development of conversion tools easier.

What’s left on the To DO List ?


     Those that read the maintenance blogs would know that things move slowly with limited time. There’s lot of things I’d love to do, but don’t have the human resources to do, when I’d like. So often we need to manage expectations and aim for smaller goals that are achievable rather than sky high thinking.

     The main goals this year has been to replace the PBVM, PB WebSite and moving into conversion phase..


     Read PlayBasic V1.65 BLOGS





 PlayBasic V1.65 Development Blog:

By: Kevin Picone Added: May 6th, 2016

Category: All,Update,Upgrade

PlayBasic V1.65 Development Blog:

     Wow a new upgrade ?... Yep… Like most upgrades work started on a V1.64P4 successor a matter of days after the previous build was released. In version terms, there really shouldn’t be a V1.65 or higher, as V1.64 was meant to the last in the original PlayBasic line. What was meant to occur, was focus would shift to the FX version, so you can think of FX as PlayBasic V2.00 . But a lot changed since the original road map was set out and the hardware landscape is dramatically different today than it was 15 years ago.

     For this update we’re going to build upon the many of the changes that were made throughout the V1.64P revisions that enabled external code building in such tools as PlayBasic2DLL and number of others. These changes will not only make for faster program execution, but they make it much easier to build translation tools down the line, which would be a nightmare if you attempted that today.

     The progress so far has been very pleasing as we’re seeing almost every benchmark returning a higher performance in V1.65. There’s way too many to go through all the changes here, You can read the blow by blow work in progress on the forums, or sometimes on the facebook page.

     Read PlayBasic V1.65 BLOGS





 PlayBasic V1.64P4 Retail Upgrade Released (24th, Mar, 2016)

By: Kevin Picone Added: March 24th, 2016

Category: All,Update,Upgrade





PlayBasic V1.64P4 _Retail Upgrade_ Now Available (24th, Mar, 2016)



     This release updates any version from PlayBasic V1.63w2 to PlayBasic V1.64P3 (retail) to the current retail version of PlayBasic V1.64P4. If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)

     The PlayBasic V1.64P4 package includes updates of PlayBasic Compiler, Release / Debug Runtimes, SLIBS, DOCS & IDE V1.17b.


     The V1.64P4 revision introduces the PBI (PlayBasic Image format) as well as including a round of compiler, documentation and bug tweaks. For more information about those read the various blog threads.


Downloads


     Download PlayBasic V1.64P4 Retail Upgrades From Forum





 PlayBasic V1.64P3 Retail Upgrade Released

By: Kevin Picone Added: November 20th, 2015

Category: All,Update,Upgrade





PlayBasic V1.64P3 _Retail Upgrade_ Now Available (20th, Nov, 2015)



     This release updates any version from PlayBasic V1.63w2 to PlayBasic V1.64P2 (retail) to the current retail version of PlayBasic V1.64P3. If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)

     The PlayBasic V1.64P3 package includes updates of PlayBasic Compiler, Release / Debug Runtimes, SLIBS, DOCS & IDE V1.17b.


     The V1.64P3 release includes fixes for known functionality breakages during the massive V1.64P/V1.64P3 update. But like all updates that's not the only thing it includes, with a lot of work being done under the hood with the compiler / runtimes in the way of more dynamic to static byte code navigation. Which includes translations of thing like the DLL command block as well as pointer instruction sets and a number of others. For more information about those read the blog thread.



Downloads


     Download PlayBasic V1.64P3 Retail Upgrades From Forum





 PlayBasic V1.64P2 Retail Upgrade Released

By: Kevin Picone Added: December 29th, 2014

Category: All,Update,Upgrade





PlayBasic V1.64P2 _Retail Upgrade_ Now Available (29th, Dec, 2014)




     This release updates any version from PlayBasic V1.63w2 to PlayBasic V1.64P (retail) to the current retail version of PlayBasic V1.64P. If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)


     The PlayBasic V1.64P2 package includes updates of PlayBasic Compiler, Release / Debug Runtimes, SLIBS, DOCS (HELP FILES) & IDE V1.17b.

     The V1.64P2 release is a relatively minor update to address functionality broken during the massive V1.64P update. Beyond those bug fixes, there are of course more improvements to the compiler & runtime command sets and debugger.

     The compiler / runtime time changes are generally improvements to the quality of the byte code the compiler produces within certain circumstances. One that comes to mind, was the ability to completely optimizing out literal fields when querying array structures from typed pointers. So code like the snippet bellow runs better in V1.64P2 than previous versions. Which in turn helps PlayBasic2DLL produce even faster machine code versions of such routines. So that's a big win !

PlayBasic Code:
  Type SomeStructure
         IntegerArray(16)
  EndTYpe

  dim Me as SomeStructure pointer
 
   Me = new SomeStructure

  // such field offsets are solved at compile time
   Me.Array(0) = 1
   Me.Array(2) = 1
   Me.Array(3) = 1
   Me.Array(4) = 1

   Print Me.Array(0)
   Print Me.Array(1)
   Print Me.Array(2)
   Print Me.Array(3)


COMMANDS USED: DIM | POINTER | NEW | PRINT |


     Such compile time optimizations are useful when we want to iterate through structures of data, so rather than bumping the ME pointer between integer fields, we could unroll the inner loop to process groups of integers and access fields at fixed offsets then bump the ME pointer. Which is a more efficient approach generally.


     Changes to commands sets that users will find the most useful, can be found in variable Alpha Blending situations, generally filling surface routines are now twice as fast when performing variable alpha blending in this version, there's also changes to the AFX alpha blending logic which screens the alpha channel value for pixels that are fully translucent or opaque, in either case those are handled with a special case. The performance benefit really comes down to how many pixels in the image need to be alpha blended. But the standard tests had a 10->20% improvement without change..


     In terms of Debugging, there's two new subtle changes in the compiler runtime. The first, is the new ability of the runtime to intervene when some pointer opcode attempts peek/poke from a null pointer. Which should generally return a runtime error if that occurs like in the example bellow.

PlayBasic Code:
  ; declare a ME as type Integer POinter
  DIM Me as Integer Pointer

    ; the runtime will stop before this line is execute as ME is 
    ; will be pointing at ZERO.. Which is memory your program doesn't
    ; own and would kill your program
   print *ME


   sync
   waitkey


COMMANDS USED: DIM | INTEGER | POINTER | PRINT | SYNC | WAITKEY |



     The other runtime/debugger change is a mode in the debugger to Enable/Disable automatic type creation when executing a program. The PB runtimes default behavior is to automatically allocate a type if you're writing to a structure that's currently empty. Generally this is handy behavior as it saves you some lines of code, but can be an issue when exporting your programs to DLL since PlayBasic2DLL doesn't support this behavior. So if you writing library code that you're going to build a DLL of, you'll find this invaluable !


     Don't have a retail version of PlayBasic ? and want to find out more information about PlayBasic programming > please visit the www.PlayBasic.com and download the free learning edition.





Downloads


     Download PlayBasic V1.64P2 Retail Upgrades From Forums






 PlayBasic V1.64P retail update released

By: Kevin Picone Added: September 22nd, 2014

Category: All,Update,Upgrade





PlayBasic V1.64P _Retail Upgrade_ Now Available (22nd, Sep, 2014)




     This release updates any version from PlayBasic V1.63w2 to PlayBasic V1.64O2 (retail) to the current retail version of PlayBasic V1.64P. If your current version is older than PB1.63W (pre June/July 1997), then you may need to install patch PB1.63w2 prior to this one ! (if you haven't already)


     The V1.64P upgrade presents a huge change to the underlying technology that PlayBasic programs execute upon. These changes range from high level compiler optimizations/bug fixes/omissions down to how almost every internal commands is called, which not only give us faster program execution, but it allows internal PlayBasic command sets to be called from the external DLL's built via PlayBasic2DLL tool.

     Programmers using PlayBasic2DLL in combination with PlayBasic V1.64P can now write truly modular applications in high level PlayBasic without ever having to learn low level C/C++ or PASCAL programming. You can write your functions and compile it a DLL using PlayBasic2DLL. Meaning PlayBasic programmers can build their own command sets /extensions and perform all brute work number in highly optimized machine code DLL's.


     There's way too many changes to try and summarize it all, so we highly recommend carefully reading through the V1.64P WORK IN PROGRESS GALLERY for more insight in what new additions are hidden away in this release.


     Don't have a retail version of PlayBasic ? and want to find out more information about PlayBasic programming > please visit the Downloads and download the free learning edition.





Downloads


     Download PB1.64P Retail Upgrade (22nd,Sep,2014)






 PlayBasic2DLL V099g Released - Fractal Performance !

By: Kevin Picone Added: June 30th, 2014

Category: All,Update,Tools,Machine Code


PlayBasic To Dll - Breaking the one second mark for fractal render

     After tweaking the floating point code generator just a little, we get an even more staggering result from the previous fractal test, which now is rendering inside a second for a 640*480 screen on my test machine AMD FX64 (3000+). The result gives us about 150 millisecond improvement over the initial test, so even the first versions of PB2DLL are surprisingly optimal, in particular when you compare those results to the primary competitors. PB2DLL is consistently 3.5 times faster than one and 5.2 times faster than another..

     In this particular example the routine has a lot of dependency, by that i mean, calculations need to be done in a set order. I suspect if the generator could interleave some of the FPU instructions around integer instructions, we could go even further though. This is possible as the integer and float (FPU) sides of your CPU can actually run in unison. Instruction operations on either side can generally overlap other instructions also, providing the following instructions don't rely upon the result of a previous instruction. So we could interleave instructions that take a long time to execute around other instructions as long as they don't rely upon the result.


     Note: The original code/demo is attached to an earlier post in the PB2DLL WIP thread, it's exactly the same code.





PlayBasic To Dll V0.99g Released and Available For Download (30th,June,2014)

     Here's revision G of PB2DLL V0.99 package. This revision is focuses on bugs and the more improvements to code generation engine. The main bug that this update fixes is the possible freeze when attempting to load a PBA that's has no exportable functions in it. It was a strange issue caused by the Replace$() function in PB, but that's been solved now. So if you select a source that has no exports, you should get an error message, rather than it hanging.


Code Generation:

     Just like the previous build i've been working on improving it's detection and abilities to solve sequences of byte code operations in order and with in CPU registers. The solver can support integer and float data types mainly. SO it's looking for sequences of integer or float operations that stack up in sequence. When it finds one, it short cuts this series of instructions.

     The Integer solver has three main additions, it support equality tests (= and <>) , Compare/Branches as well as better support for Left/Right hand operators. The latter allows it to better track where which side of the temp data came from, then remap the operator accordingly.

     On the float side, the changes are a little different, the float solver can handle recasting results and some limited single parameter functions like Sqrt(), ABS() as well as the normal addition/subtraction/Divide/Multiplies.









Viewing Page [2] of [3]



 

 
     
 
       

(c) Copyright 2002 / 2024 Kevin Picone , UnderwareDesign.com  - Privacy Policy   Site: V0.99a [Alpha]