DRR's Dimension News:
- Saturday, November 24, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:30
- The symflagArray symbol flag is now gone, with the BArray type flag being used everywhere instead.
- I removed a section of code that was mostly duplicated between contextExit and contextEnd.
- The PurgeTemporaries subroutine has been partially optimized (no longer scans the entire symbol table).
- Friday, November 23, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:29
- The Environ$(String) function has been added. This includes an internal version of Peek% that works with far addresses. Since you can't get command-line parameters from within the QBasic IDE, SwiftBASIC now supports an environment variable ("DB_CommandLine") as an alternative. This allows further automation of the regression test.
- I added the one's complement and disjunction operators for the Long data type.
- There is an issue where Integers won't get casted to Longs when on the left-hand side of binary operators when the right-hand side is a Long (it will truncate the Long to an Integer instead), and the code was reversed to work around this for the time being.
- I modified the Str$ function to not append trailing spaces. This is needed when calling Print on a numeric type (which invokes Str$), but not when calling Str$ directly.
- And SwiftBASIC can compile itself once again.
- Thursday, November 22, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:28
- I fixed a bug in ByVal_Integer_ByVal_Single that overwrote two extra bytes of memory.
- After hours of fruitless searching for another weird FPU bug (the exact same simple operations would sometimes work and sometimes fail, returning FFFFC000000000000000 when converting to BCD or &H8000 when converting to an integer), it turned out that I was running out of registers on the FPU stack because I never executed an FINIT instruction at the beginning of the program. I thought something else was corrupting memory, or maybe I was missing FWAIT instructions, etc.
- I fixed a few other bugs in the 2 ^ X routine (using FADD instead of FADDP, FSUB instead of FSUBRP, assuming FSCALE pops the stack) and Operator_Exponentiation overloads (for operators, parameters are actually passed in registers even they are marked as ByVal). The exponentiation operator test cases finally work now.
- Saturday, November 17, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:27
- The new VarSeg function was always returning zero because its return value was being overwritten. This is fixed and the Call Absolute test program works now.
- The compiler can now call external functions to evaluate operators in a general manner (previously, all operators had to have ASM or function calls hard-coded).
- The exponentiation operator can be invoked now on integers and single-precision floats instead of calling Pow(), but one or more bugs are causing it to always return zero currently.
- Sunday, July 22, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:26 synopsis written 2007-11-23
- I fixed a bug in Call Absolute where I was missing the parameter.
- Val() now handles hexadecimal numbers and Hex$() works now.
- Saturday, July 21, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:25 synopsis written 2007-11-23
- I added code for exponentiation (implemented using the x87 FPU to calculate X ^ Y using 2 ^ (Y * log2(X)) with FYL2X and F2XM1). This includes the Ln(), Exp(), and Pow() functions.
- I started to write support for external operator calls, but it isn't finished yet.
- There is a new MangleOperator function (for function name resolution and error messages).
- The parser will now reject numbers with letters in them.
- Wednesday, July 4, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:24 synopsis written 2007-11-23
- I added the VarSeg function and Call Absolute, although only one argument is supported and Def Seg isn't supported yet.
- The deallocation code in the ReDim subroutine has been moved to a separate Erase subroutine along with the addition of separate validation code.
- The function overload resolution code is better now, choosing overloads with parameters only differing in attributes (ByVal vs. ByRef) over parameters with different types.
- I added stub code for the Shared statement (currently all module-level variables are shared).
- And I have added the Hex$(Value) and Input$(Length, FileHandle) functions.
- Sunday, July 1, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:23 synopsis written 2007-11-23
- I added the BArray flag and started migrating code away from symflagArray. I also cleaned up some of the usage of the BReference flag.
- Local arrays are supported now.
- Saturday, June 30, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:22
- I got rid of the BFar class flag by making the memflagFar flag for DLoad/DStore/DParameter/etc. The other class flags have been adjusted to make more room for the future BArray flag.
- I also changed how user-defined types are distinguished from built-in types, saving about 5KB of compile-time memory in QB.
- Monday, June 25, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:21
- I found a memory-corrupting bug in the new Poke_Far subroutine (wrong segment register) used by the new version of ReDim. After this fix, the standard regression test (compiling itself) works again, minus the known bug with hexadecimal literals.
- Sunday, June 24, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:20
- I rewrote the ReDim subroutine in BASIC. When I got to the string part, I instantly spotted a major bug where the routine would attempt to deallocate strings using the new dimension, not the existing dimension. This fixed the Array test program.
- The array descriptor flag for string arrays was not properly being set; this is fixed now.
- The following support procedures were added to the memory management code to facilitate the low-level memory access needed by the ReDim subroutine: New and Delete (wrappers for Mem_Alloc and Mem_Dealloc that use stack parameters instead of register parameters), DGroup (which just does a mov ax, ds instruction), Poke_Far (far memory version of Poke), and Poke_Word (sixteen-bit version of Poke).
- Sunday, March 4, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:19
- Build 18 broke the ability of SwiftBASIC to compile itself since it added a dynamic array of variable-length strings.
- I made updates to the declare and store routines to handle dynamic string arrays. This includes forcing them to always be near (all other dynamic arrays are far).
- I also updated the ReDim subroutine to handle near arrays and string allocation/deallocation.
- Right now, it still doesn't work yet due to crashing bugs (bad memory deallocations) that I haven't found yet.
- Sunday, February 4, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:18 synopsis written 2007-02-25
- Type identifiers are now two bytes everywhere. Previously, they were two bytes in most places but only one byte when they were stored in a string, usually as part as a set of procedure parameters.
- Symbols now have their parameters stored as strings in a separate array instead of as elements in the user-defined type. This allows them to be variable-length strings and occupy less space.
- There are a few places where parameters still need to be a part of the user-defined type, and for this a separate user-defined type has been created. There also are three new procedures (SymbolGet, SymbolSet, and SwapSymbols) to do the translations.
- Saturday, February 3, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:17 synopsis written 2007-02-25
- I added support for inline assembly using the grave accent ("`") at the beginning of each line.
- Sunday, January 28, 2007: DRR Software > TextLand
- TextLand Version History v1.00:10
- The program now background-highlights more text when idle. I switched from using LockWindowUpdate on the form to WM_SETREDRAW on the form (using it on the control has the same problem). There was constant noticeable flicker, however (the same as when you type). I suppressed this by calling ValidateRect on the control. But it still flickers when you type.
- I also successfully subclassed the control to drop WM_PAINT messages when redrawing, but this turned out to be unnecessary and is now disabled.
- Saturday, January 27, 2007: DRR Software > TextLand
- TextLand Version History v1.00:09
- I fixed the bug where the desktop would flicker when the text was updated. This was accomplished by calling LockWindowUpdate with the hWnd of the form instead of the hWnd of the RichTextBox.
- The program is now called "TextLand" instead of the generic "Text Editor."
- Sunday, January 7, 2007: DRR Software > DRRbasic
- SwiftBASIC v2.00:16 synopsis written 2007-02-25
- I added an overload of the Division32 function that discards the remainder.
- The division operator now works for long integers (still does integer division only).
|
DRR's Dimension Sections:
|