BCX 8.2.5 has been uploaded.
This update includes bug fixes and new features.
https://bcxbasiccoders.com/archives/YahooGroups/Bcx_Files_New/Bcx825.zip
SHA-256: 439e0d570720fb1d59ac9133d2839fc30eb2292c233fb2657369095cd10cbd64
~ MrBcx ~
REVISIONS:
*********************************************************************************************
2025/02/25 Changes in 8.2.5 from 8.2.4
*********************************************************************************************
Kevin Diggins : BCX 8.2.5 cannot be built using version 8.2.4. You must use the included
8.2.5 executable -or- use the Bc.cpp included in the \BootStrap\ folder.
Kevin Diggins : New! += string concat operator added to BCX. Syntax: StringVar += Arglist
BCX will automatically transform a string statement, such as:
AutoProcess[ProcessIdx].Status += "Activated"
to this finger bruising equivalent:
AutoProcess[ProcessIdx].Status = AutoProcess[ProcessIdx].Status + "activated"
This new feature was tested using simple, arrayed, and TYPE-member strings
but it's possible that edge cases might be encountered that confuse BCX.
This feature is now being used throughout the BCX translator (8.2.5)
and has replaced all $FILL blocks and CONCAT keywords used in earlier
versions, in addition to passing the hundreds of standard regression tests.
Those facts give me high confidence with my implementation of the operator.
By way of example, here are a few lines used internally in BCX (8.2.5):
FirstVar$ += "Line" + STR$(LineNum[FileNdx]) + " in Module: "
FirstVar$ += TRIM$(FileNames$[FileNdx]) + " : " + GlobalName$
FirstVar$ += GlobalDim$ + " as " + GetVarTypeName$(GlobalType)
FirstVar$ += SPC$ + TypeDefs[GlobalDef].VarName$
*************************************************************************
KNOWN LIMITATIONS
*************************************************************************
(1) Statements that use the += concat operator are -currently- incompatible
with the colon [:] statement separator. For example,
A$ += "Uh Oh!" : PRINT A$ ' BCX politely ABORTS with an Error Message
A$ += "Oh Boy, it worked!" ' BCX WILL translate this correctly
PRINT A$
(2) BCX cannot infer the type of any compiler's internal MACRO's. One example
of this is MINGW64's __VERSION__ macro which is a STRING. Therefore, it is
necessary to append the string sigil "$", i.e. __VERSION__$, in order to
inform BCX that __VERSION__ needs to be treated as a string.
(3) BCX will politely ABORT when it encounters "=+" instead of "+="
Kevin Diggins : Improved the performance of the SOUND() statement. Previously, the Windows
midi engine was started and stopped each time a SOUND() statement executed,
resulting in numerous sonic issues (latency, stutters, unplayed notes, etc).
I've changed all that. Now the midi engine is started once and remains
active for the duration of our application. When our application properly
terminates, it will automatically shut down our use of the midi engine.
Kevin Diggins : Improved (fixed?) the translation of WITH / END WITH statements
Kevin Diggins : Improved the parsing/encoding of DATA statements that are comprised of
unquoted negative numbers.
Kevin Diggins : Fixed BCX's processing of overloaded SUBS/FUNCTIONS.
Kevin Diggins : Ongoing formatting improvements to the source, output and runtime code
Woot! Thanks MrBcx!
👍😁
Thank you!