Hi All,
This "not so" short message to advise readers that a Peersoft hot fix has been uploaded at the URL
The reason for this is that the current archive now includes a "hotfix".
a) Hotfix description: while processing a still unknown simple variable (routine PTRGET) while evaluating a mathematical formula (routine FRMEVL), PTRGET does not create a new slot for such an undeclared variable but merery updates the result value pointer to point to a ROM zone filled with zeros (five zeros bytes in a row) thus returning either a 0 value scalar (FP or integer) or an empty string depending on the valtyp flag. This way of doing is a safeguard in case an array element value is altered by the [optional] LET statement that stores a pointer (in form of an absolute address) to element's value upon stack before calling the FRMEVL routine.
However, Peersoft up to previous release has not changed the value tested on top of stack to check whether the call to PTRGET was from FRMEVL or not (same value
test as in original ROM routine). Now it does given the fact that the software includes a FRMEVL replacement in RAM itself calling a PTRGET replacement in RAM too.
Briefly stated, the instruction sequence below:
5 CLEAR: DIM EC(1)
10 EC(0) = UV: PRINT EC(0): END
will hangout the program with Peersoft version 1.4 and below, now it does not (with version 1.5 and later).
b) Other benefits and changes from downloading this release (over the v1.4 release features):
b.1) New function IIF in order to return a result from either of two expressions given a boolean criterion.
FL% = IIF (A > 3.14, 1, 0): PRINT IIF (FL%,"OK","KO")
This function provides enhanced performance and flexibility over using alternate expressions such as <booleanCriterion> * Expression1 + NOT
<booleanCriterion> * Expression2.
b.2) The max value for specifying a dimension within a DIM as within a reference to an array variable is increased from 32767 to 65535 (this to cater for byte arrays that will be featured in next v1.5 software release);
b.3) The maximum number of dimensions allowable in a DIM statement for declaring an array variable is decreased from 255 to 15 (this is to cater for additional subtyping between integer types and making room for the storage sepcifier, introduced in the next 1.5 release).
b.4) There is a new way to refer to a multi dimensional array which involves only one dimension specifier. Therefore, the two routines below:
DIM AE!(4,5):S! = 0: FOR I=0 TO 4: FOR J=0 TO 5:S! += AE!(I,J): NEXT J, I
DIM AE!(4,5): S! = 0: FOR I = 0 TO 29:S! += AE!(I): NEXT
will both compute the sum of the AE! array's elements. The latter one being possible with this release of Peersoft and being simpler to author and somewhat optimized for speed and space purpose.
b.5) A new function is available, the DIM function can return # of dimensions as well as # of element within every array dimension.
PRINT DIM (AE!), DIM (AE!,1), DIM (AE!,2) will output the scalars 2, 5 and 6 onto display.
b.6) Cache mechanisms in order to speed up variable reference lookups now implemented.
100 RE! = PEEK (40160) + PEEK (40161) * 256: CALL RE!,1,J%,A$,AR` will update the cache so that lookups to variables J%, A$ and the user defined function variable AR are considered at first before even scanning the SVA. A similar raeson code, 3, exists for manging the array variables cache (e.g. CALL RE!,3, AE! will
The main differences from using a physical reorganization for accelerating variable references are:
b.6.a) Cache based mechanisms can be activated within a FOR/NEXT loop without any issue, unlike call that ask for a physical reorganisation of the SVA (simple variable area).
b.6.b) Cache based mechanism includes a small overhead/delay to lookup variables which are not included within the cache. This is not the case with calls which physically reorganizes the SVA/AVA.
The files to download are:
- D34Peersoftv15.do: Binary executable images of Peersoft
- D34Merlin - Peersoftv15.do: Peersoft sources fdisk image (with Merlin 8 working environment)
- ShrinkitP15.2mg - hard disk image to help porting the software to real Apple 2 hardware (with the help of Cider Press and a CFFA interface card).
- DocumentPeer.rtf: Document describing the features included within the real Peersoft v1.5 (when it will be released) over to the current Peersoft release (v1.4). Within this document, sections written with green ink being already included in the hotfix release. Sections written with black ink being currently developped through not yet at a release state.
Have fun,
Benoît
--
Growing old is mandatory..
growing up is optional..
But the other way round is as true.