OXYLOG.TXT

'see testlog3.o2bas

https://github.com/Charles-Pegge/OxygenBasic
https://sourceforge.net/projects/oxygenbasic/


======================
OXYGEN.DLL UPDATES LOG
======================

00:21 02/06/2026 Remove internal linefeed parsing checks
22:04 01/06/2026 Support Linux/Apple text line endings conversion (utft.inc)
16:13 01/06/2026 Implement internal zword() for faster parsing
20:26 31/05/2026 Fix member privatization inherited as public (prf prfs)
20:26 31/05/2026 Change prf flag signal 0 1 2. (prf prfs)
17:25 25/05/2026 Support the "to" assignment operator (expr.inc)
15:01 22/05/2026 Implement 'MakeWindow' default wndproc (winutil.inc)
10:28 22/05/2026 Move 'MainWindow' call to the end in all demos. Natural order.
21:30 20/05/2026 Revoke iposx,iposy use sposx,sposy instead (GuiInterface.inc)
20:52 20/05/2026 Support use of 'incl' in both himac and lomac (pars.inc incli)
23:30 19/05/2026 Test public/protected/private, fix (pars.inc chmp=0)
21:05 19/05/2026 Fix assign for 'typ*var=addr' (subs.inc bn prmf)
00:31 19/05/2026 Fix gprint (oprional to default=) (opengl)
23:56 18/05/2026 Fix LightButton toggle for ColorCodedPick (controls.inc))
10:02 18/05/2026 Fix 64bit export floats passed / '*' byref (typl)
21:59 17/05/2026 Fix 'has' with pointered members (subs.inc)
08:48 17/05/2026 Fix Export inherited object offsets (subs.inc vof)
19:46 15/05/2026 Implement direct namespace creating functions and variables (newrecord)
07:11 15/05/2026 Internal refactor findmember (pars.inc mt ch)
05:04 15/05/2026 Internal 'hasfun' flag, detecting methods.
00:52 15/05/2026 Internal 'sectmk' to replace '/\' encoding (sectmk)
15:03 14/05/2026 Reintroduce 'protected' (subs.inc prf=2)
21:45 12/05/2026 Reintroduce public and private (subs.inc prf=0 prf=1)
11:47 12/05/2026 Fix export member call 'this' offset (prepcall if atx)
23:11 11/05/2026 Fixed Declaration syntax (atparse addvarlist)
23:26 10/05/2026 Extend declaration syntax for 'at' (atparse))
23:24 10/05/2026 Add internal exit on '=' to capts(). (exeq)
22:39 09/05/2026 Fix internal identops (,a+b)
19:39 09/05/2026 Fix dim char literal causing compiler lexing problem (addvarlist)
05:40 09/05/2026 Fix alignment of global vars (decl.inc regs=qebx)
11:25 08/05/2026 Optimize internal roundupc()
07:31 08/05/2026 Support prefixed local / static 'dyn' and 'redim' (ndd)
02:23 08/05/2026 Revoke 'static' postfix for 'redim'
01:19 08/05/2026 Fix 'dyn' to allow static/local prefix (lang.inc omit dim)
16:05 07/05/2026 Support extern virtual calls (prepcall atx))
11:56 07/05/2026 Support'end export' (etxx=0)
08:34 07/05/2026 Support redim with extern objects (lang.inc .___)
23:25 06/05/2026 Fix ControlSaucer2 virtual controls
07:18 06/05/2026 Fix array offsets for indirect members (wvarf)
07:14 06/05/2026 Fix lent of higher types (readvals drc(a).b
07:12 06/05/2026 Fix 64bit controlSaucer text (int *oi)
23:13 03/05/2026 Fix inheritance in virtual classes (omit block above nblock:)
12:12 01/05/2026 Support 'link export' for relaying imports to exports
01:15 01/05/2026 Resolve import/export !* fun() at ?x export (subs.inc case 5)
16:12 30/04/2026 Implement 'export' .. 'end export' super block (etxx)
07:34 30/04/2026 Fixed GuiStateServer GuiStateClient SharedMem interprocess 
20:34 29/04/2026 Improve lo macro substition logic (pars.inc lomac)
18:34 29/04/2026 Extend 'library' syntax same as 'extern lib' (tran.inc)
16:32 29/04/2026 Support automatic 'virtual' when lib is spacified (tran.inc)
04:10 29/04/2026 Allow virtual class properties except pure/com (atx pars.inc not poss)
06:53 28/04/2026 Remove OpenGlBase
06:51 28/04/2026 Move part of ConsoleG to OpenglSceneFrame
07:42 22/04/2026 Fix GL/UI/ScrollEdit line pick (PickChars)
22:04 21/04/2026 Fix Print3D suppression of picklabel (PickChars)
21:38 21/04/2026 Improve PE file section mapping. (hdrs.inc setimagestat)

AI KI AGENT B FIXES
00:17 18/04/2026 B9:  Disagree for now. Both compilers produce same 32/64 binaries
23:48 17/04/2026 B8:  Fix ConvertOutput always returns static string pointer
22:23 17/04/2026 B7:  Trap null VirtualAlloc. Propose code section VirtualProtect
22:23 17/04/2026 B6:  Fix flag clearing utf16=0 (utft.inc)
22:16 17/04/2026 B5:  Already fixed command line case (co2 co2m64)
22:13 17/04/2026 B4:  Fix o2_buf error behaviour (main.inc)  
21:56 17/04/2026 B3:  Fix pex to pexn (main.inc)
21:49 17/04/2026 B2:  Disagree: dwords are used for 32bit host
21:46 17/04/2026 B1:  Fix o2_abst early exit (main.inc)

AI KI AGENT A FIXES
08:17 17/04/2026 A12: Create co2.inc for code common to co2 and co2m64
08:10 17/04/2026 A11: Disagree oxideutil.inc findreplace
07:52 17/04/2026 A10: More efficient lcase(), in SearchString (searchutil.inc
07:37 17/04/2026 A9:  Extend filenamelen to 512, stay with ansii filenames
01:26 17/04/2026 A8:  Static array hfont[4]... DeleteObjecthfont[1] etc 
00:30 17/04/2026 A7:  Restructure CompilerInfo() (OxideUtil.inc)
00:05 17/04/2026 A6:  Comment out md expression in Oxide
23:52 16/04/2026 A5:  Disagree Peroxide file saving
21:40 16/04/2026 A4:  Fix text line buffer size s=nuls 512
21:29 16/04/2026 A3:  Fix FindFirstFile : if h>0
14:02 16/04/2026 A2:  Fix return codes from exec() etc. (sysutil.inc)
13:52 16/04/2026 A1:  Make co2 and co2m64 compilers commandlinecase-sensitive (tools\co2*)

20:03 15/04/2026 Implement 'embed' macro o2 q %1 (lang.inc)
16:08 14/04/2026 Implement o2 script q"t.bin" file embedding (link.inc)
09:41 06/04/2026 Trap 'Select' expressions other than int or float (ert=423)
19:33 23/03/2026 Remove duplicated swap macro from inc\self\main.inc
12:46 25/02/2026 Support int v{1,2,3} with assumed '='
11:34 25/02/2026 Merge AddVarList and Assigdim
06:06 24/02/2026 Fix replacewd for #define
15:52 23/02/2026 Fix isptr() ptr count for [][]
15:48 23/02/2026 Fix vector v={{1,1},{1,2}} implicit array (assigdim)
12:37 22/02/2026 Fix macro replacewd derived members ## (replacewd mode))
21:23 29/01/2026 Add JSON output to tools/ManualGenerator
15:00 13/10/2025 New literal 'quote' storage to support nested quotes and L"..." wide.
08:16 17/04/2025 Adjust symbol records size 48 bytes (reco.inc records))

RELEASE 0.9.0

13:43 15/04/2025 Fix % prefix equate evaluation (meta.inc cword)
02:12 14/04/2025 Start unicode.inc uchr ucode umid
18:45 13/04/2025 Fix del with simple string/bstring (lang.inc del ptrlevel)
13:45 13/04/2025 Detect wide string expressions for print etc (expr.inc typu)
23:09 11/04/2025 Remove 'left' functions. use macro instead (lang.inc left 20)
18:55 09/04/2025 Fix 'opening' 'closing' 'running' (OpenglSceneFrame.inc WinUtil.inc)
12:10 08/04/2025 Fix duplicate CreateWindowex (winutil.inc)
16:30 07/04/2025 Prevent auto array on compund types. RECT rc={1,2,3,4} (subs.inc typf<typh)
21:23 05/04/2025 Fix strptr with equates (pars.inc kn<>21)
19:51 05/04/2025 Fix internal capts 'and or xor' line brak (reco.inc)
08:16 05/04/2025 Internal wordorblock capturi/captureblock (meta.inc wordorblock)
22:08 04/04/2025 Internal merge captarray (precedence)
15:04 04/04/2026 Fix expression capture affecting macros (reco.inc capts))
10:47 04/04/2035 Fix redim copy size (lang.inc _lq_)
02:43 04/04/2025 Fix unique symbol precoding (pars.inc himac)
01:07 03/04/2025 Fix int a[100]={1,2,3} array size (subs.inc e=elct+1)
01:05 03/04/2025 Fix console printl no arg (console.inc macro printl)
16:14 01/04/2025 Fix macro symbol case-matching (himac icase=1)
16:12 01/04/2025 Fix dynamic array index (ert=504)
00:51 01/03/2025 Reduce code for function defaults (subsas)
18:16 31/03/2025 Restore Macro default values. New code. (Himac w5)
12:02 31/03/2025 Remove string initializers (reco.inc strini strinr)
02:33 31/03/2025 Fix records clearing size (reco.inc init4 @drc)
09:22 30/03/2025 Dynamic Records (reco.inc maxit)
02:51 30/03/2025 Fix records member int sizes .a and .f (reco.inc)
17:12 28/03/2025 Reduce nest/unnest staticvars etc (reco.inc)
13:49 28/03/2025 Fix 'unnest' to always retain local space (reco.inc lclr)
02:05 26/03/2025 Change namespace symbol from '..' to '::' (colom setnamespace)
20:15 23/03/2025 Revoke checking for colons in single line type statements (tran.inc " : ")
11:39 23/03/2025 Revoke recursion/expansion for deff macros. (expr.inc  expandfmac)
22:20 21/03/2025 Fix higher type '+='  '*='  macros (tran.inc expr.inc cpa>2)
04:56 21/03/2025 Fix higher function return copy (rps=16)
16:52 20/03/2025 Optimize Higher types assignment (tran.inc accg)
22:20 17/03/2025 Inhibit macro param case conversion (parse.inc lomac icas=1)
22:10 11/03/2025 Implement more efficient namespace resolution (reco.inc dotm))
15:53 10/03/2025 Implement nested namespace without leading '..' (reco.inc nss nk))
11:04 10/03/2025 Implement %0 unique symbol substitution in def macros (lomac)
11:03 10/03/2025 Revoke %% escape check in def macros. (lomac)
03:38 09/03/2025 Support d[1]={...} : n=countof (massign elct)
14:16 08/03/2025 Revoke default values in macros (pars.inc himac)
15:42 07/03/2025 Implement #unquote (pars.inc mword() )
11:55 07/03/2025 Remove ##. from OpenglScrnrFrame.inc etc macros
01:44 07/03/2025 Rework himac and replacewd / macro (pars.inc lexi.inc)
20:40 04/03/2025 Revoke embedfile (ebd)
22:16 03/03/2025 Support infinity as a variable (lang.inc)
22:04 03/03/2025 Implement initialization macro (lang.inc tran.inc)
17:44 03/03/2025 Changes in lang.inc: pow and exp (lang.inc ~~~)
00:51 01/03/2025 Prevent peroxide terminating on escape key (27) (peroxide.o2as)
21:20 28/02/2025 Support 'foreach x x[i]= ...' (lang.inc)
21:20 28/02/2025 Support 'on x gosub/goto' (lang.inc)
21:20 28/02/2025 Support 'view x' (lang.inc)
21:20 28/02/2025 Support 'stretch x(n)' (lang.inc)
21:20 28/02/2025 Support 'dyn int x(n)' (lang.inc)
21:09 28/02/2025 Support '#tally {1,2,3 ...}' (pars.inc)
12:37 28/02/2025 Revoke 'inner', use 'scope' instead (lang.inc)
12:06 28/02/2025 Improve 'anymatch' (meta.inc anymatch idword)
02:42 28/02/2025 Rearrange records structure (reco.inc records)
02:34 27/02/2025 Fix detection of excess left bracket in classes etc (nocapt)
19:40 26/02/2025 Extend #show to display resolved macros (pars.inc shd...)
11:20 25/02/2025 Fix redim zc  / idx / mf (glo2\graphicOjects.inc)
03:12 24/02/2025 Annotation of code in #show (enco.inc shd)
19:12 23/02/2025 Change asm loading literal numbers 64it (CheckLiteral)
19:09 23/02/2025 Display variale names in #show (shd)
23:19 22/02/2025 Enable all dynamic arrays to define multidims (rarray)
23:19 22/02/2025 Remove array Attribs table from class _table (no vot)
23:19 22/02/2025 Fix flagsof() on undefined variable ('flagsof)
05:43 22/02/2025 Support simple arrays without attribs table ( _dims_ )
05:43 22/02/2025 Fix dynamic arrays (ert=503)
04:40 21/02/2025 Expand capacity from 32k to 128k symbols etc (maxit)
05:17 19/02/2025 Fix on .. macro params (lang.inc)
05:17 19/02/2025 Fix goto/gosub labels/variables (tran.inc 'goto fwd)
20:02 18/02/2025 Undef insturction extended to block labels (o2 z)
04:56 18/02/2025 Support ForEach x {x[i]=...} (lang.inc)
01:24 18/02/2025 Fix #unique: allow function overloads and declarations (rec.inc -5)
23:09 17/02/2025 Support 'view' macros (lang.inc)
20:28 17/02/2025 Change messagebox title from O2H to O2H (mbox RTL32/64)
16:58 17/02/2025 Support 'on' macro for on gosub/goto (lang.inc)
02:42 15/02/2025 Fix register spills for ms64 yval h params (typq aprm))
20:17 13/02/2025 Support pseudo-variable assignment with default param functions (subsas)
11:15 12/02/2025 Changes to Manual (oxyDatabase.inc OxygenBasic_Manual.chm)
05:34 10/02/2025 Support subroutines to always retain local space (lclr)
14:58 06/02/2025 Support dim c as asciiz*20*10 (rmuldim:)

RELEASE 0.8.0

12:11 01/02/2025 Fix userblocks macro end ("_end")
13:35 31/01/2025 New macro recursion prevention. Remove mex lct (dct)
14:57 30/01/2025 Fix fastcall stack corruption (crgd=crg)
14:56 30/01/2025 Support 'declare static function' in types
14:13 28/01/2025 Fix const strings to bstrings (decl.inc cnst)
13:31 28/01/2025 Simplify operator definition (uop)
18:47 27/01/2025 Support 'type X as Y'  (typedef)
18:46 27/01/2025 Support #macro() .. #endmacro
01:07 23/01/2025 Support declare inside a type
11:41 22/01/2025 Support thiscall and fastcall on 32bit.

11:45 28/10/2024 Add -j option for jit command-line args to compilers co2 and co2m64 (swc=0x30)
08:54 01/08/2024 Fix cr qu redefinition, avoiding C-macro detection (tran.inc preproto select e )
03:33 25/07/2024 Support built-in tab cr crlf qu spc. Remove these dims from incs and demos. (lang.inc 18)
10:24 21/07/2024 Fix single line type/class ":" replacewd problem (tran.inc lexi.inc replacewdt isq(ascn) )
04:25 15/07/2024 Support early def/macro expansion %!1..%!9 (pars.inc lomac %!)
06:09 27/06/2024 change "#ifdef mode64bit" to "#if sizeof sys = 8" (checked all files)
08:40 18/06/2024 Support ordinal default params (,,x,) (pars.inc subsas replas)

08:23 27/05/2024 Restrict console inkey() mouse to leftor right buttons (console.inc and 3)
08:21 27/05/2024 add defaualt flags pram  to exec() and DOS()  (sysutil.inc flags)
14:53 09/05/2024 Fix macro case sensitivity issue (lexi.inc replacewdt clcase)
08:10 08/04/2024 Revert not using buildsig (subs.inc buildsig)
22:39 26/03/2024 Revoke 'dim shared' FreeBasic syntax (tran.inc)
22:02 26/03/2024 Implement 'shared' (tran.inc pars.inc)
18:30 18/03/2024 Fix axial rotation equations (inc\mathutil.inc mat4x4rotate ca)
14:32 18/03/2024 New Transform4D class for 4d geometry in mathutil, (requiring %MathUtilExtra ) (inc\mathutil.inc)
14:38 16/03/2024 Fix 'exit procedure'-->'exit subroutine' instances (subs.inc subs1.inc)
05:14 16/03/2024 Fix MakeTypes error exit subroutine (subs.inc "unidentified element type")
13:27 13/03/2024 New maths examples (demos\math)
13:03 07/03/2024 Regress subs.inc only. Problem with 64bit BuildSig.
07:13 07/03/2024 Regress Oxygen64.dll to 04/03/2024 release. Oxygen.dll is ok
23:47 05/03/2024 Fixes for extended case expressions. Test on TinyBasic interp (demos/interpreters)
17:52 05/03/2024 Internal remove tword and gword functions. use icas for case control (lexi.inc icas)
06:09 05/03/2024 Internal transfer to buildsig. Remove nd>10 sections from parsedim (subs.inc)
'
19:11 03/03/2024 Remove 'typedef float typ' from inc\mathutil.inc
14:24 03/03/2024 Rework BuildSig and ParseDim (supporting Basic param defaults) (decl.inc subs.inc)
19:16 01/03/2024 Fix extended select/switch (cnd expressions) (tran.inc)
13:46 01/03/2024 Support prototype default values AS 'function f(a=123 as byte) (dimtype astb)
13:19 01/03/2024 Internal 'elseifs' shortcut" (tran.inc elseifs: nd>0)
22:47 29/02/2024 Support extended select / case expressions (tran.inc xep)
12:17 26/02/2024 Revoke '%0' hiex token (lomac)
04:30 26/02/2024 Revoke '%*' Repeating macro (macrep lomac)
15:19 24/02/2024 Support 'function f as tp ..' (subs.inc was=)
13:58 23/02/2024 Support 'macro function/procedure m as tp ..' syntax (meta.inc)
23:59 21/02/2024 Revoke more.inc and intrinics[] (main.inc meta.inc tran.inc)
13:17 19/02/2024 Update dialogs.inc / include TabControColor (Pierre Bellisle) (demos\WinDynDialogs)
11:26 16/02/2024 Convert MakeTypes and MakeHeaders to subroutines (decl.inc to subs.inc)
11:26 16/02/2024 Create file 'subs.inc' for 'Translate()' subroutines
21:17 15/02/2024 Revoke dot inner macros, no longer used. (meta.inc MarkInner)
03:27 10/02/2024 Fix opengl\geom\ files Glext 64bit issue with zstring cast (glext=)
11:09 08/02/2024 Restore 'dim' inside types by excluding from w3 lists (decl.inc MakeHeaders)
06:56 08/02/2024 Fix #if def/ndef for dotted var names with array tertms (meta.inc excisebr)
12:50 06/02/2024 Revoke '#Insert' proc tracer (tran.inc)

16:24 27/01/2024 Support internal (lang.inc)
16:23 27/01/2024 Revoke intern (lang.inc)
11:57 16/01/2024 Fix Fix ubound for static 1 dimensional arrays (decl.inc "_dims=")
08:52 15/01/2024 Fix virtual functions declared with '!' (decl.inc " ! dim declare ")

21:43 09/01/2024 Add Peroxide F4 or Shift-Find to search current file only (tools\Peroxide.o2bas postloc)
17:45 08/01/2024 Add Peroxide 'SAVE AS' (tools\peroxide.o2bas command 4002)
15:51 08/01/2024 Fix inc\FileDialogs.inc capitalization for OpenGl environment
17:38 02/01/2024 Remove prematur cr definition (RTL64.inc line 4204)

RELEASE 0.7.0P10  01/01/2023
14:47 01/01/2024 Drop UPX compression of Oxygen DLLs
04:56 01/01/2024 Fix proja\controls\controls.inc bstring txt instead of string txt
14:26 29/12/2023 Fix ubound(x) for indexbase 0 (lang.inc ubound)
15:46 24/12/2023 Fix 64bit oxygen array attributes asm sword (decl.inc "mov dword ")
09:15 24/12/2023 Fix for(...) single statement ++ operators (tran.inc reco.inc capts identop)

RELEASE 0.7.0P9  19/12/2023
20:52 19/12/2023 Support C-style multidim x[..][..].. (rarray fixsqbr)
09:06 19/12/2023 Support C-style if(..) / While(..) for(...) single statement (tran.inc captsr)
22:26 09/12/2023 Restore Remap, previously 'overlay' (lang.inc)
21:39 08/12/2022 Fix sub-array indexing (expr.inc arcc=0)
17:48 02/12/2023 New Instrp pattrn search '*' '?' (parseutil.inc)
17:45 02/12/2023 Rework Inkey and Get. Make KeyRecord available (console.inc)
18:51 30/11/2023 Create Ogl.inc to contain Opengl Headers
22:44 23/11/2023 Fix operator finding (meta.inc findop)
22:27 16/11/2023 Redesign redim and array_mep
22:27 16/11/2023 Revoke overlay
22:27 16/11/2023 Redesign dim attributes table (ubound)
02:46 14/11/2023 Fix ubound() and elements() for 1d arrays (decl.inc lang.inc)

RELEASE 0.7.0P8  09/11/2023
15:35 09/11/2023 demos/opengl/geom folder containing Sierpinski etc
15:13 09/11/2023 demos/opengl/UI folder for controls
13:16 07/11/2023 inc\openglsceneframe etc change closing protocol
13:14 07/11/2023 demos\opengl\controls\ add destructors for bstring label
13:25 06/11/2023 FileDialogs.inc includes FileDialog and BrowseForDir

RELEASE 0.7.0P7  08/10/2023
16:29 08/10/2023  Fix #lookahead (decl.inc =lns)

RELEASE 0.7.0P6  04/10/2023
11:20 04/10/2023  Fix macro (with prototypes) inside classes (decl.inc 'beware)

RELEASE 0.7.0P5  23/07/2023
13:50 20/07/2023 Fix line numbers inside types/classes (decl.inc lns)
13:49 20/07/2023 Fix internal union type comment. Conserve comments. (decl.inc types() isc() )

RELEASE 0.7.0P4  16/07/2023
12:43 16/07/2023 Fix Typedef declaration (tran.inc case -8)
03:46 16/07/2023 Fix MultiAssign for pointered types (meta.inc drc(mp).e )

RELEASE 0.7.0P3  11/07/2023
09:09 11/07/2023 Fix Peroxide keyword highlight (SetFocus w[4])
03:41 05/07/2023 Fix Peroxid dir groups (tools\peroxide.o2bas DoSearch)
13:17 04/07/2023 Combine peroxide and peroxide64 (peroxide.o2bas ex64))
07:06 03/07/2023 Change sps back to string (reco.inc)


RELEASE 0.7.0P2  02/07/2023
12:17 01/07/2023 64bit Fix param conversion float to int etc ( expl.inc pet(pa)=n )
08:59 01/07/2023 6bit Fix duplicate param load problem (expr.inc w2=cpua)
00:00 30/07/2023 Fix Captbody / internal single liners (decl.inc captbody)
16:15 29/06/2023 Fix single line5 type / class / def (decl.inc capturedefs)

RELEASE 0.7.0P1  22/06/2023
12:31 17/06/2023 QuExec() exec for quoted filenames (inc\SysUtil.inc)
12:29 17/06/2023 64bit Fix SelectPixelFormat sys hDC
20:17 16/06/2023 Fix ComUtil.inc CallByName() macro and examples
20:15 16/06/2023 Fix speech examples (64bit pixelformat sys

RELEASE 0.7.0  15/06/2023
07:31 15/06/2023 64bit Fix nodim gpf (tran.inc newstatvar() )
14:06 14/06/2023 Fix pling/or !/| typos (demos\wingui\)
12:37 14/06/2023 Adapt Oxide to support 64bit co2m64 compiler
12:36 14/06/2023 Move exponents from lan.inc to enco.inc
12:34 14/06/2023 Fix version corruption / add bitness (lang.inc)
12:54 13/06/2023 Add to o2_stats spm max record space (main.inc)
12:44 13/06/2023 Fix negative record index (decl.inc findop)
02:19 12/06/2023 Fix ++/-- inc/dec qword [ebp-24] etc (enco.inc xopw)
17:08 10/06/2023 64bit Fix 32bit binary (tran.inc regnames)
17:04 10/06/2023 64bit Fix lookupm function return as int (reco.inc)

RELEASE 0.6.05  04/06/2023
22:20 04/06/2023 Support return for byval UDT. (tran.inc 'return c)
22:18 04/06/2023 Fix extern type. remove vtp ___ (tran.inc ~undefbuf)
03:19 04/06/2023 Restore UDT params passed byval (expl.inc dprm aprm)

RELEASE 0.6.04  03/06/2023
08:52 03/06/2023 Fix inc file paths containing spaces (pars.inc rootpath a=0)

RELEASE 0.6.03  01/06/2023
21:21 01/06/2023 Comment out GuiSharedMedMem. Not working in compiled apps (winutil.inc)

RELEASE 0.6.02  01/06/2023
04:37 01/06/2023 Copy KeywordsSorted.txt to inf for keyword coloring

RELEASE 0.6.01  31/05/2023
10:49 30/05/2023 Add AppExePath to sysutil. Remove ExeDir.

RELEASE 0.6.0  30/05/2023
10:34 30/05/2023 Fix assumed op (ncompar case 0 op=0)

RELEASE 0.6.0  20:46 28/05/2023
04:06 27/05/2023 Support Operator def with commas (lexi.inc uword)
04:03 27/05/2023 Fix operator def symbols <>!= (expr.inc ncompar)
12:07 26/05/2023 Revoke UDT params passed byval (expl.inc dprm aprm)

RELEASE 0.6.0  21:39 21/05/2023

21:37 21/05/2023 Fix Types without methods notation (decl.inc w4))
05:53 19/05/2023 Fix type within type functions problem (decl.inc captbody mo=2)
20:05 17/05/2023 Fix loop trap with macro inside class (rps=12)

RELEASE 0.6.0 16/05/2023

23:47 14/05/2023 Structural alterations to source code
03:45 13/05/2023 Support implic gosubs based on prior label (tran.inc gowhere)
03:44 13/05/2023 Support 'procedure' to replace sub/function/method (procedure)
15:34 11/05/2023 Support 'static' functions in classes (decl.inc stw)
15:34 11/05/2023 Revoke 'virtual' in classes (decl.inc makeheaders)
04:50 09/05/2023 Revoke 'defm machine macro system (old\defm.inc)
20:30 08/05/2023 Support 'rem' block as well as line (tran.inc)
17:43 07/05/2023 Implement 'subroutine' / exit / end (tran.inc)
12:43 07/05/2023 Support inline asm inside expressions (expr.inc "asm")
22:14 05/05/2022 Support function nesting, including classes (decl.inc tran.inc defpro)
01:13 04/05/2023 Revoke generic macro expansion inside class block (decl.inc makeheaders)
01:13 04/05/2023 Implement 'intern' block for private class definitions (intern)
19:54 02/05/2023 Merge 'class' and 'type' (tran.inc mclass:)
13:28 02/05/2023 Support named inner entities within class: type def macro % $ (undefbuf)
32:21 01/05/2023 Revoke 'exclude'
18:07 30/04/2023 Support 64bit cdecl with aligned stack pointer (expl.inc callcnv)
18:05 30/04/2023 Revoke 'build' but support new class obj(..) local / static flags (lang.inc new 18)
18:05 30/04/2023 Support virtual classes with direct access to properties (lang.inc new 18, tran.inc mclass)
04:22 12/04/2023 Fix function name $ % endings (lexa.inc vword)

RELEASE 0.5.0P15

10:15 02/01/2023 Fix folder refs from 'ProjectsA' to 'demos\!ProjA'
09:41 30/12/2022 Prevent neg column numbers in error report (tran.inc sttw-sttl+1)

RELEASE 0.5.0P14

19:00 05/11/2022 Correct for indexbase (lang.inc reindex)
12:56 05/11/2022 Expand undefined macro limitmax (lang.inc reindex)

RELEASE 0.5.0P13

05:28 04/11/2022 Support reindex and _sort_ as core macros (lang.inc)
05:26 04/11/2022 Fix error message for res file not found (reso.inc ers=)
06:20 31/10/2022 Fix filepath for using .res file (meta.inc wd)


RELEASE 0.5.0P12

04:57 19/10/2022 Update thinBasic_Oxygen
20:03 18/10/2022 Remove '#file' from all except rtl32.inc and rtl64.inc
14:57 18/10/2022 Fix #file, always set independent=1 (tran.inc)
14:41 18/10/2022 Fix Opengl ControlPanel demos / 64bit compiled
15:16 16/10/2022 Fix param functions returning htypes byval (expr.inc owv)
02:10 15/10/2022 ThinBasic_Oxygen o2_run: combi o2_bbasic and o2_exec


RELEASE 0.5.0P11

16:52 09/10/2022 Fix Iterator, LineNumbers1,2 ,Subroutine (demos\Basics)
23:10 07/10/2022 Support 'strider' using 'scaler'
08:50 07/10/2022 Built in time-stamper when building o2
23:08 06/10/2022 Revert to original const. Remove #lock (cnst)
16:36 04/10/2022 BuildOxygenDLL batch-file with time stamper


RELEASE 0.5.0P10

08:02 03/10/2022 Fix include "..\" proj mappings. (uses)
08:00 03/10/2022 Fix inner {...} (lang.inc)
06:45 02/10/2022 Support filenames containing spaces (oxide peroxide co2)
20:40 01/10/2022 Remove redim from generics. In lang.inc only.


RELEASE 0.5.0P9

05:10 01/10/2022 Redim destructors working in reverse order (lang.inc _qb+1 step-1)
02:29 29/09/2022 Move Peroxide to /tools folder. Access it from Oxide
02:22 29/09/2022 Fix 1d redim size (lang.inc redim 18 _qb_ )
14:08 28/09/2022 Reorganize folder structure
03:25 28/09/2022 Remove  refs to _buf for redim arrays
03:25 28/09/2022 Fix COM CoCreateInstance ..voice, not @voice (COM ComUtil)
03:25 28/09/2022 Fix COM CoCreateInstance ..voice, not @voice (COM ComUtil)
10:55 27/09/2022 Fix general ellipsis ... (tan.inc pars.inc wr=ow)
08:39 26/09/2022 Fix peroxide size 256k, home, end clean
22:12 24/09/2022 #majorminor and #minormajor switches (lang.inc tran.inc parse.inc)
22:12 24/09/2022 Peroxide IDE based on Finded

RELEASE 0.5.0P8

02:43 17/09/2022 Attribute 2 for multidim array / trap err (decl.inc expr.inc .h)
02:41 17/09/2022 Swap cta and arwd positions (decl.inc lang.inc)
20:44 16/09/2022 Implement elements,dims,scaler,ubound,lbound,void_ (lang.inc decl.inc expr.inc)
20:44 16/09/2022 Fix built-in swap macro (lang.inc)

RELEASE 0.5.0P7

17:02 14/09/2022 Support custom _repeat etc (tran.inc w1+" ")
17:02 14/09/2022 Support custom _exit (tran.inc _exit)
11:41 14/09/2022 Support goto/gosub fwd next prev (tran.inc)
09:46 14/09/2022 Fix asc_ and unic_ underscores (lang.inc)

14:25 13/09/2022 Implement #minormajor and #majorminor order stters
14:25 13/09/2022 redim tables min space for 8 dimensions (decl.inc d=8)
14:21 13/09/2022 function/sub polymorphs mid_ instead of _mid (lang.inc tran.inc etc) 
14:19 13/09/2022 Implement overlay arrays (as redim without buffer and oop support ) (lang.inc)

21:13 12/09/2022 Support endfor endselect end for (tran.inc lang.inc))
21:13 12/09/2022 Implement dynamic multidim arrays (lang.inc redim)
20:23 06/09/2022 Implement multidimensional arrays (decl.inc expr.inc)
23:59 05/09/2022 Implement symbols 'operator' with op number and precedence

RELEASE 0.5.0P6

22:19 03/09/2022 Fix class calls (expl.inc class call)
20:57 02/09/2022 Implement 'operator' user-defined

RELEASE 0.5.0P5

15:06 01/09/2022 Change redim %2_buffer to %2_buf (lang.inc) 
15:05 01/09/2022 Revoke dot MacroMembers. Support macro vec_"+" etc

RELEASE 0.5.0P4

18:30 31/08/2022 Support customised blocks (tran.inc +="_end")
12:05 31/08/2022 Revoke block .. end block (lang.inc etc)

RELEASE 0.5.0P3

13:51 30/08/2022 Fix 'recursion supected in macro' (meta.inc wr<>wp)
13:51 30/08/2022 Support macro dot prefix fusion  (pars.inc identword)
13:51 30/08/2022 Revoke _join_ (pars.inc wq)

RELEASE 0.5.0P3

17:35 29/08/2022 Implement parent namespace (lexi.inc bword reco.inc "...")
18:02 28/08/2022 Implement dotted namespace (lexi.inc bword reco.inc "..")

RELEASE 0.5.0P2

13:38 24/08/2022 Implement nestable namespaces (reco.inc meta.inc namespace)
23:47 23/08/2022 Fix namespace cn::_print recursion (reco.inc nsp=)

RELEASE 0.5.0P1

02:16 17/08/2022 Update linker fwdref / bakref etc
14:54 14/08/2022 Support 'exclude' and 'note' (lang.inc tran.inc)
14:19 14/08/2022 Support 'interface' placeholder like 'module' (lang.inc)
15:55 12/08/2022 Support 'module' and 'inner' blocks (lang.inc)

RELEASE 0.5.0P

15:38 09/07/2022 Support in linker for q raw binary (link.inc)
15:36 09/07/2022 Support assembler segment override prefixes: mov eax, fs:[0x18] (tran.inc assm.inc]
00:34 05/07/2022 Spport empty array members a[0] (decl.inc arraysize)
05:34 04/07/2022 Compacted records drc word fields (reco.inc)
11:00 01/07/2022 remove redundant namespace record mrcio(n,7)
11:00 01/07/2022 Merge mrch with mrcio (mrcio mrch)
22:45 30/06/2022 Swap record layout for int ant string fields (mrcio mrciob omrcs)
22:45 30/06/2022 Modularize lexa.inc lexi.inc reco.inc glob.inc
18:59 24/06/2022 Consolidate DirUtil into SysUtil (co2.o2bas)
17:09 23/06/2022 Extend #undef for multiple symbols (meta.inc)
01:52 23/06/2022 Implement #lock to make vars read-only, as constants  (#lock)
01:50 23/06/2022 New const to support compund types (cnstr cnsterr)
12:35 17/06/2022 Support #if metakeywords defined undefined (meta.inc)
12:35 17/06/2022 Revoke #if metakeywords def ndef isdef isndef (meta.inc
10:39 04/06/2022 Implement #fpnprecision for single/double (fpnp)
22:29 23/05/2022 Fix float pointer members passed to proc pointer param (expr.inc c=49))
18:21 28/04/2022 Implement macro 'expand' for early macro expansion (meta.inc)
23:28 23/04/2022 Change %0 usage in macres to be a token substitute (pars.inc macres %0)
17:50 22/04/2022 Start built-in resource compiler (reso.inc AddResource)
17:49 22/04/2022 Adjust string buffs ( main.inc gsco gsrc gsas t )
15:27 21/04/2022 Review recursion traps (recursion wct mct lct mex)
21:22 20/04/2022 Change internal wrd to bword (bword xword)
21:22 20/04/2022 Add metatype 5 to intrinsicrec (meta.inc)
20:35 20/04/2022 Support language extensions (more.inc)
19:29 18/04/2022 splits aword (asm only) and gword (lexi.inc)
13:07 18/04/2022 Use char* for nextspace endline skispace skiplspace ascl instrevn
10:14 18/04/2022 Use char* for midspace midnuls cv4 mk2 mk4 mk8 skipquote
08:53 18/04/2022 Use char* instead of string*  for noquotec nocrs clcase (lexi.inc)
20:34 17/04/2022 Fix abs(c),1. mrcio boundary checks (expr.inc abs(c) )
14:24 15/04/2022 Compiler analytics (main.inc mbox)
04:48 15/04/2022 Reduce o2 maxit to 0x4000 spc 64*maxit (was 99999) (glob.inc)
00:22 14/04/2022 Support '_' command/function counterparts in overloading (tran.inc procs

RELEASE 0.4.0

21:17 01/04/2022 Add rightmatch and anymatch to metalanguage (maeta.inc)
20:54 01/04/2022 #alert supports list of errors (tran.inc #alert & errordetails)
18:28 01/04/2022 Fix meta 'LeftMatch' with quotes (noquotes)
18:28 01/04/2022 Support Metatypeof
18:27 01/04/2022 Strip 'then' single liners from source code
14:15 22/03/2022 Fix findmember to suport unlimited oop depth (pars.inc goto rmatchm etc)
19:49 19/03/2022 Change internal symbol 'typm' to 'typr'
23:47 17/03/2022 Add 'ptrlevelof' cases to 'del' (lang.inc ptrlevelof)
16:10 17/03/2022 New function defndef (meta.inc)
16:07 17/03/2022 Fix #if ndef xyz (meta.inc isa(ascw) )
13:39 14/03/2022 Add pseudocommands: _asc _unic _chr _wchr as macros (lang.inc tran.inc)
22:18 13/03/2022 Remove 'del' from 'new' macro (lang.inc)
22:09 13/03/2022 Fix syntax for v{1,2,3} (pars.inc arrfix cases tran.inc massign)
15:22 12/03/2022 Support 'build' for creating direct objects (lang.inc build)
14:15 12/03/2022 Fix del freeing memory (lang.inc ptrlevelof)
07:56 12/03/2022 Fix direct/pointer returns in methods (decl.inc indn)
22:04 27/02/2022 Fix void variable expression error trap (enco.inc void)
12:12 25/02/2022 Fix Assignment copying for higher byval returns (expr.inc operationsh)
14:46 29/07/2021 Fix proc params returning a pointer (expr.inc and expl.inc opg=1024)

RELEASE 0.3.0 +

13:28 20/02/2021 Use full-calc params when enclosed by brackets (expr.inc uex or=2048)
13:26 20/02/2021 Support double-pointering on direct variables (expl.inc)
13:25 20/02/2021 Remove print diagnostic (expl.inc ptrd)

RELEASE 0.3.0

18:40 05/02/2021 Fix double pointering for floats byref
23:56 03/02/2021 Fix string double pointering. string literals etc (expl.inc 50)
22:56 03/02/2021 Fix indexer for nested expressions full calc. (expr.inc irx)
18:09 20/01/2021 Fix "move" if exists (expr.inc (findop(typ,"move"  )
14:05 12/01/2021 Support operator _join_ (pars.inc)
20:48 09/01/2021 Support lpartof rpartof vtypeof symbol attributes (pars.inc lang.inc)
18:49 29/11/2020 Support def macro word combine (pars.inc if not g)
12:02 29/11/2020 Support himacro word combine (pars.inc function+=mid)
17:48 16/11/2020 Fix param counting for byval params (expr.inc and bvg=0)
09:41 10/11/2020 Support Macro functions invoked without return (tran.inc if rps)
12:18 08/11/2020 Fix no-element count {} (pars.inc elct=-1)
16:29 13/10/2020 fix higher assign from func (expr.inc operationsh)
16:51 21/09/2020 Fix float boolean expr: if frac(a)... (tran.inc setnz)
13:04 14/09/2020 Intercept int() and replace with round() (expr.inc "round ")
11:37 09/09/2020 Revoke gosub/goto while (tran.inc 'gosub)
17:18 06/09/2020 Improve 'repeat' syntax (tran.inc level number)
12:43 06/09/2020 Support do until.. (tran.inc "while not")
08:12 04/09/2020 Support numeric expression repeat until 1 etc (tran.inc asc(w3)>47)
14:39 03/09/2020 Fix precedence within [..] (pars.inc precedence i++)
11:18 30/08/2020 Extra crs before and after '>>>>'
11:17 30/08/2020 Remove indent 'jmp fwd _over_'
13:16 20/08/2020 Revoke C ternary conditional expressions (expandexpr)

09/02/2020 RELEASE 0.2.9

12:03 13/04/2020 Support operator precedence inside sq bracket array (pars.inc)
18:22 01/03/2020 Support typeof and typecodeof for functions and arrays (pars.inc)
14:59 26/02/2020 Fix boolean function expressions (expr.inc usx)
10:59 27/12/2019 Support struct instantiations (tran.inc "dim ")
11:29 11/11/2019 Fix quad returns for 64bit (cpuquad fpuquad)
'15:05 09/11/2019 hi level macro sources now processed by precedence() (meta.inc)
13:00 25/09/2019 fix   0^0 0^n (lang.inc powers fucomip)

20/09/2019 RELEASE 0.2.8

11:54 20/09/2019 Fix MessageBoxW (rtl64.inc 504 rax)
19:54 19/09/2019 Fix prior print (tran.inc procs: w3)
19:49 17/09/2019 Support bind .. end bind (tran.inc 'bind skiplspace)
19:27 17/09/2019 Fix bind variable alignments (tran.inc addrc lt)
18:13 11/09/2019 Fix upper/lowercase uses ...res (meta.inc lcase)
17:34 11/09/2019 Fix co2 quoted filename with spaces (tools\co2.o2bas s2)
22:44 10/09/2019 Both 32/64bit quads processed through FPU (pars.inc enco.inc)

19:24 26/08/2019 UPDATE 0.2.7

15:01 26/08/2019 Fix declared procs (byval int ...) (tran.inc n=18 fdd=b )

26/08/2019 RELEASE 0.2.7

12:40 26/08/2019 Rebuild Multiassign with decomposition, remove fron express() (massign)
13:04 25/08/2019 Fix bycopy (...), allowing brackets (pars.inc)
04:55 25/08/2019 Adjust for local and static multiassign (massign)
17:14 22/08/2019 Trap address assignments to fixed address (expl.inc 727)
17:35 21/08/2019 Adjust leftmatch #if leftmatch typ,float (meta.inc)
08:25 20/08/2019 Support Indexbase as a conditional pseudovariable. (pars.inc)
15:01 19/08/2019 Fix declared procs (byval int ...)  (tran.inc n=18)
20:55 15/08/2019 Fix 64bit ltrim rtrim with null strings (rtl64.inc)
12:54 15/08/2019 Support any expression at beginning of for FOR (tran.inc forb)
14:16 07/08/2019 Fix dword/int movzx MD5 sproblem (expl.inc numoperation)

06/08/2019 RELEASE 0.2.6

09:26 04/08/2019 Fix char compare, add wchar compare (compz compw)
19:46 03/08/2019 Edit FindEd - decouple sysutil, support leading space searches.
17:33 03/08/2019 Use pet() instead of pat(), parameter-effective-type (pet(pa))
22:48 02/08/2019 Fix variadic floats using cpu regs instead of xmm regs (expl.inc ellipsis)
11:54 02/08/2019 Fix Variadic / Ellipsis strings 64bit (expl.inc compatsig ellipsis)
11:52 02/08/2019 Fix Noprototype floats: no conversion of floats to single.


01/08/2019 UPDATE 0.2.5

10:31 01/08/2019 Fix NoPrototype indirect floats (expl.inc noprototype wd=wpfx)
07:16 01/08/2019 Trap expression nesting errors (expr.inc)

29/07/2019 RELEASE 0.2.5

15:56 29/07/2019 Cleanup boolcnd boolify (enco.inc tran.inc)
05:12 29/07/2019 Fix default-params distinction a=b from a==b (expr.inc)
21:38 28/07/2019 Fix missing _end_sel numbering (switch) (tran.inc) 
21:26 28/07/2019 Change comparator logic value from 1 to -1 (boole: neg eax)
22:40 27/07/2019 Implement 'uses myresources.res' (reso.inc)
16:37 27/07/2019 Implement AddResources in co2
10:42 27/07/2019 Assign local indirect udt strings to global gc list (asgl asstrga asstrla)
09:30 26/07/2019 Create tools\LinkRes resource linker to replace LinkRes2exe.

24/07/2019 UPDATE 0.2.4

09:42 24/07/2019 Remove resource section stub from binaries (hdrs.inc rres rsrf)

22/07/2019 RELEASE 0.2.4

15:47 22/07/2019 Optimize basic iterations i++ (tran.inc fors)
04:08 22/07/2019 Support ',)' (expr.inc tran.inc ascn=44)
13:16 20/07/2019 Refactor iterations for decomposition (tran.inc)
16:27 19/07/2019 Revoke global labels (link.inc tran.inc link.inc)
16:26 19/07/2019 'Remove scoping from basic blocks (tran.inc iterations)

17/07/2019 UPDATE 0.2.3

13:08 17/07/2019 Cleanup 64bit param coding (expl.inc paramblock)
13:07 17/07/2019 Fix 64bit param functions (expr.inc)
12:55 16/07/2019 Support basic-style iterative step function (tran.inc precalc)
12:10 16/07/2019 Fix global label re-insertion (link.inc)
00:21 16/07/2019 Update GoRc resource compiler 1.0.2.1

15/07/2019 RELEASE 0.2.3

16:01 15/07/2019 Fix print procedure (tran.inc)
22:12 14/07/2019 Extend direct params for unprototyped procs 'byval
10:10 11/07/2019 Rework encodele as macro, fix indt,indi (decl.inc)
16:37 10/07/2019 Rework types() buffering (decl.inc wrb wri)
06:14 10/07/2019 Support ',)' in procs f(int a,b,) (tran.inc null param)
12:50 08/07/2019 Support direct UDT params (dprm)
12:49 08/07/2019 Revoke retn (lang.inc tran.inc)
12:48 08/07/2019 Restrict global label scope inside procedures (o2 z)

01/07/2019 RELEASE 0.2.2

03:36 30/06/2019 Implement backward jumping to global labels (link.inc gl(n) )
21:51 29/06/2019 Oxide Compile and Run (oxide.o2bas exec )
21:39 28/06/2019 Support -d option to create DLL files (co2.o2bas)
14:00 28/06/2019 Support -r option to run binary file (co2.o2bas)
12:45 28/06/2019 Support main 'return' for returncode (tran.inc 'return c style)
21:06 27/06/2019 Correct ExitProcess code (RTLs)
04:53 27/06/2019 Support number strings starting with ""+" (RTLs ascii_to_float)
11:55 26/06/2019 Transfer 'precedence' function to lexi.inc
11:11 26/06/2019 Fix 'prior' for procs (pars.inc "prior")
16:20 25/06/2019 Manual and Manual software update

24/06/2019 UPDATE 0.2.1

04:40 23/06/2019 Rename instrword to idword
15:04 22/06/2019 Create utfs.inc
15:01 22/06/2019 Decouple and Transfer lexa.in & lexi.inc to /inc folder

21/06/2019 RELEASE 0.2.1

09:10 21/06/2019 Add o2version and rtlversion matching.
02:51 21/06/2019 #error now uses metalanguage expression (tran.inc #error)
02:50 21/06/2019 Version matching between o2 and RTLs (o2version)
10:55 20/06/2019 Add to RTL SetLastError [rbx+96] (RTL32.inc RTL64.inc lang.inc)
10:55 20/06/2019 Add to RTL GetLastError [rbx+88] (RTL32.inc RTL64.inc lang.inc)
17:36 19/06/2019 Cleanupup with identop instead of "+ - * ..." (expandexpr capts mword)
16:44 19/06/2019 Revoke returns such as procname=... (pars.inc if mc<0)
06:19 18/06/2019 Rework RTLs EXE/DLL code (RTL32 RTL64 DLL)
02:42 16/06/2019 Improve runtime error message (DLLs) (RTL32/RTL64.inc _error_)
17:40 15/06/2019 Change zstring2 and bstring2 to wzstring and wbstring
13:21 14/06/2019 Support scoped procedure link (tran.inc lnks)
02:31 14/06/2019 Fix Negative indexbase arith (expr.inc pars.inc "indexbase")
18:25 13/06/2019 Fix UDT variable assignment from UDT byval function (expr.inc op<2)
15:28 12/06/2019 implement 'prior' to reference earlier definitions (pars.inc lookupr)
13:57 12/06/2019 Refactor function overloading system (nextproc)
03:21 12/06/2019 Refactor lookupm and cmpsp (reco.inc)
04:27 11/06/2019 Support C style for (;;;) omitted expressions (tran.inc iterations:)
12:31 10/06/2019 Allow IndexBase to be read (expr.inc "indexbase")
11:36 09/06/2019 Improve preinc/predec index a[++i] (expr.inc CHECK PRE)
03:25 09/06/2019 Fix space padding for zero num.sns (RTL32.inc RTL64.inc space zero)
13:44 08/06/2019 Support operators shl shr rol ror pow mod (pars.inc)
13:44 08/06/2019 Support bitwise logic on float expression (expr.inc)

07/06/2019 RELEASE 0.2.0

11:08 04/06/2019 Fix RTL64 numberformat 32bit params (RTL64.inc)
10:37 03/06/2019 Update Oxide for independent-only compiling
12:04 02/06/2019 Udate GXO2 (but not unicode) (\tools)
18:57 01/06/2019 Suppress divi fpum setting for higher types (expr.inc divi) 
18:57 01/06/2019 Fix higher conditional (assign to eax) (expr.inc "="+wacc+cr)
21:48 30/05/2019 Remove 'static' from redim macro (lang.inc)

17:20 29/05/2019 Support Unicode symbols (co2.o2bas) (lexa.inc utf)

18:46 28/05/2019 Restrict assignments within expressions ':=' only (expr.inc)
12:59 28/05/2019 Fix strini ref without array (glob.inc strini)
07:13 28/05/2019 Fix capts ... 'then' order of evaluation (lexi.inc endex)

15:48 27/05/2019 Support co2 (console) compiling options -32 -64

15:42 27/05/2019 Support UTF/unicode in all source files (meta.inc ConvertUTF)

15:36 27/05/2019 Remove chr(12) from oxide and co2 / "use " instead
15:33 27/05/2019 Remove chr(12) detection (pars.inc) linemark
12:57 25/05/2019 Support asinh acosinh atanh macros (lang.inc)
12:25 25/05/2019 Support sinh cosinh tanh macros (lang.inc)
12:24 25/05/2019 Revoke destructors macro (lang.inc)
14:21 23/05/2019 Extend number lierals to 64bit range in 64bit mode (o2enco.inc checkliteral)
07:22 23/05/2019 Extend number literals to quad range (o2enco.inc fistp qword q)
09:13 21/05/2019 Fix numberformat to work in jit mode (rtl32.inc rtl64.inc bx+688)
08:11 21/05/2019 Change ebx refs to rbx refs (RTL64.inc
00:31 21/05/2019 Fix nested float macro for fpuquads 32bit mode (expr.inc typc<0x60)
15:51 20/05/2019 Fix returned pointer function local mem (tran.inc wva(1)=w5)
14:14 20/05/2019 Revoke PB string member format 'c as asciiz*64' (decl.inc)
10:38 20/05/2019 Fix string convert/cast problem (expr.inc 'cvx)
03:59 20/05/2019 Fix string literl concat problem (lexi.inc remove captstrings)

05:15 19/05/2019 Insert brackets for procs without them (tran.inc lexi.inc captsb)

22:4917/05/2019 Support 'goto next..' 'gosub next' 'goto fwd ...' (tran.inc 'goto)

22:33 17/05/2019 Support dot global labels (..name) (tran.inc link.inc)

10:24 14/05/2019 Fix 'convert' for unprototyped cdecl (expr.inc)
11:04 12/05/2019 Fix print brackets problem. insert quote pair "" (tran.inc procs:)
12:01 11/05/2019 Fix mixed int expression with float proc (expr.inc above doneprocs:)
16:46 06/05/2019 Support member array SPANOF / BYTESOF (pars.inc aml)

11:06 04/05/2019 Support name endings: !#$%&? (lexi.inc)

10:14 04/05/2019 Revoke #dim (tys)

10:13 04/05/2019  Trap typeless dim (tran.bas)

04:49 02/05/2019 Prevent prior macro expansion: sys a=... (preproto)
07:44 01/05/2019 Revoke 'type of' etc (pars.inc "of")

11:07 30/04/2019 Fix unspaced colons: label recognition.

i12:10 23/04/2019 Fix wchr() number literals (expre.inc chareval)
12:06 23/04/2019 change labels 'here' to '_h_ (enco.inc rtl32.inc)

21:47 03/02/2019 checksum translated to asm (hdrs.inc)
19:08 02/02/2019 Implement checksum in PE files (hdrs.inc)
17:46 23/01/2019 Remove 'void' adjustments fix void* (types decl.inc)
11:10 22/01/2019 Windows Defender false positive oxygen.dll Win32/Fuery.B!ml Unwaders.C!ml
10:51 22/01/2019 Internal unaryh subroutine for 'not' and 'neg" etc
13:34 20/01/2019 Internal array expression flag irx (expr.inc irx)
13:31 20/01/2019 Perform "conv" before main calc (converterh hiex+=)
13:08 20/01/2019 Support "save" operation switch accum-based (expr.inc tran.inc)
13:38 16/01/2019 Fix 64bit extern variadics (expl.inc block if n)
15:48 14/01/2019 Fix qword literals: imul qword [rbx+4096] (assm.inc qword operand)
08:39 08/01/2019 Support macro ops: 'not' 'neg'
22:13 07/01/2019 Support Macromember functions (himac wt)
22:12 07/01/2019 Fix scoped #ending brc (epgi[brc])
12:20 05/01/2019 Support specified alignment in UDT union groups: + 8 (decl.inc if a=43) 
18:01 29/12/2018 Fix UDT array with indirect member
13:48 29/12/2018 Fix UDT padding, including UDT arrays (mps)
13:47 29/12/2018 Fix trailing sub-UDT alignment (roundupc)
18:47 28/12/2018 Revert Appe() to using mid()
18:23 28/12/2018 Macro ops: init free conv move save (findop)
03:37 26/12/2018 Suport inner union append '+' like '=' (wmn)
11:15 24/12/2018 Change 'save' macro 1 param ("save")
12:55 20/12/2018 Support 'move'and 'conv' Remove 'load'
12:50 19/12/2018 Change macro 'constructor' to 'load'
12:50 19/12/2018 Change macro 'destructor' to 'free'
23:49 17/12/2018 Reverse _op order to (dest,src) (expr.inc)

06:12 17/12/2018 Fix macro insider ## substitution (himac)
14:29 16/12/2018 Fix wide string literal binary encoding (makerecordw)
18:40 15/12/2018 Typeof returning text in chr(34) quotes (pars.inc newline)
06:04 15/12/2018 Revoke 'operator' methods & cleanup (findop)
04:27 15/12/2018 Fix Empty macro problem (replacewdt)
22:58 14/12/2018 Appe() uses copy() instead of mid()
18:37 14/12/2018 Fix "=" bug subsas (f=a)
18:35 14/12/2018 Support accum setting with += -= assignments (cpa>2)
04:19 14/12/2018 Revoke class-operators, retain macro-operators(findop)
19:09 13/12/2018 Work on nested scopes for epilog code
00:05 13/12/2018 Merge mcword into replacewdt 
14:40 12/12/2018 Remove wword uword parsing (destructors 20)
02:43 12/12/2018 Refactor macso etc. (mac to mrc)
12:00 11/12/2018 Implement bycopy
23:14 10/12/2018 Fix Macro ops handling funcs in expressions (hlex owa)
11:43 10/12/2018 Change expression order (expr.inc hlex hiex)
10:49 10/12/2018 Support "save" operation for register-based accumulators ("save")
01:18 10/12/2018 Revoke support for primitive down-converting load
10:57 09/12/2018 Refactor typa1 htyp (typx typh)
10:31 09/12/2018 Fix macromember name search (pars.bas rmk)
02:48 08/12/2018 Suppress del / destructor nullify call
18:19 07/12/2018 Add nullify function to wrap _nullify (tran.inc lang.inc)
13:45 06/12/2018 Jit mode early copy call vectors (posbin(3) pvd)
05:29 05/12/2018 Support redim string s(n) clear (lang.inc clear)
04:44 05/12/2018 Fix redim to include nullify for UDTs (lang.inc)
04:41 05/12/2018 Fix match and leftmatch (removing noquotes) (meta.inc)
11:09 04/12/2018 Consolidate hash coding (hashmac)
01:57 04/12/2018 Internal readint() 'fast integer reader (pars.inc)
03:31 02/12/2018 Fix comments in UTF-8 / UTF-16 reader (lexa.inc)
19:08 01/12/2018 Internal integrate ccomment() with endcatline
19:07 01/12/2018 Internal midspace() and midnuls() functions
16:45 28/11/2018 Fix metacoding in types and classes (decl.inc md=macio(mp,5))
03:26 26/11/2018 Support multiple Multiassign params in one expression (dataset hiex)
12:06 24/11/2018 Precode index expression procedures (procedcall xmode)
12:03 24/11/2018 Precode integer procedure calls in expressions (procedcall epfx)
16:25 22/11/2018 Fix Assignment for direct/indirect structures (tran.inc htypes)
10:04 21/11/2018 Fix overshoot with default assignment a={} (subsas ascw=12)
21:39 20/11/2018 Remove appendm, using appe instead (proclist etc)
18:37 20/11/2018 Restore UTF-16 appending string literals (enco.bas utfs)
18:18 20/11/2018 Allow dumping of returned floats and strings (tran.inc dumping)
11:51 18/11/2018 Fix dword division '/' conversion  (typb=0x48)
11:28 18/11/2018 Fix byte shifts (expl.bas numop excluding shifts)
22:13 12/11/2018 Implement 'midstr' for optimised concat (midstr)
22:09 12/11/2018 Alter priority of '&' operator vs address (pars.bas identop 38)
12:33 11/11/2018 assembler error reporting format update
12:27 11/11/2018 Report error saving binary (SetLastError GetLastError)
06:41 11/11/2018 Assembler support for op labels (assm.bas yword junk)
06:35 11/11/2018 Remove requirement for istrue method (tran.bas istrue)
06:18 11/11/2018 Fix termination order of lobal destructors (pars.bas -19)
05:07 11/11/2018 Support for higher assignment ops += -= etc (tran.inc loadh)
04:29 11/11/2018 Support for invoking macro op destructor (decl.inc dstr)
04:22 11/11/2018 Support for invoking macro op constructor (expr.inc constructor)
04:22 11/11/2018 Support for invoking macro op constructor (expl.inc constructor)
23:55 10/11/2018 Incorporate rtlObjects (tran.bas util=)
23:43 10/11/2018 Rewrite nextinstruct (lexi.o2bas)
23:43 10/11/2018 Rewrite instrevn to remove mid(..)  (lexa.inc)

04:57 07/11/2018 Fix arrow '->' notation (cpointer lexi.inc pars.inc)
23:21 06/11/2018 Fix syntax dim a as single=4.5 (endex as)
19:16 06/11/2018 Internal length mask change from 31 to 15 (and 15)
06:10 05/11/2018 Support unsigned 64bit QWORD
06:22 04/11/2018 Remove iq3 (iq1 iq2)
06:02 04/11/2018 Refactor internal quote (iq4 iqi)
06:00 04/11/2018 Remove line marker symbol (lnm)
18:17 03/11/2018 Remove static marker chars (252 253 |mk 1 mk 0)
12:48 03/11/2018 FindEd search keywords separated by two commas,, (getphrase)
12:02 03/11/2018 Change internal sub-record marker from chr(9) to chr(8) (rmk)
14:54 01/11/2018 Convert source code 'end if' to 'endif'
04:46 31/10/2018 Support objects in primitive expression ( operator +v() as string
11:34 30/10/2018 Fix case syntax: case value followed by comment (solvecasesym)
16:01 28/10/2018 Integrate macro and object operators (opmethods opvar)
09:47 27/10/2018 Convert 'if len(s)' to 'if s' string booleans
09:25 27/10/2018 Suport object comparison & boolean operators
11:35 26/10/2018 Support object operators
11:15 26/10/2018 Support extended 'with' syntax '..' (wths)
11:14 26/10/2018 Fix namespace names containing '::' (reco.bas instrevn)
11:21 26/10/2018 Support named enumeration dot members (enums)
11:10 26/10/2018 Trap attempted assignment to non-variables (not a variable) 
11:10 26/10/2018 Fix higher types retval / retvar as pointer (typp)
11:09 26/10/2018 Support deferred destructors (epif)
11:09 26/10/2018 Fix lost arrays in types (tran.inc -8)
11:07 26/10/2018 Trap undefined types in C-style prototype (ert=406)
11:00 26/10/2018 Support wide string literals L"..." (utfs)
10:59 26/10/2018 Support UTF-8 and UTF-16 big-endian / little-endian (bom)
10:59 26/10/2018 Fix 64bit right() and mid() with negative offsets (RTL32 & RTL64 mids)
10:59 26/10/2018 Self-compiling 0.1.0 (7 Oct 2018) (final FB 6 Oct 2018)
11:05 20/10/2018 convert if block to case block (enco.bas sizeofregs)
11:01 20/10/2018 Fix integer comparator (expr.bas comparister)

08:44 20/10/2018 Rollback \inc\o2 to 06/10/2018

11:44 18/08/2018 Fix pointer typed param passing (o2expl.bas 'd+=indt)
02:59 18/08/2018 Change macro guidbin to guidptr (o2keyw.bas)
13:52 11/08/2018 Fix duplicated export problem (o2sema.bas dtx)
13:32 11/08/2018 Fix E17 bug (o2runt.bas rtl32.inc rtl64.inc ,18-->,17)
13:41 09/08/2018 Fix adjustment to spl space buffer length (o2reco.bas)
18:26 30/07/2018 Fix o2_version static string. (oxygen.bas)
22:28 29/07/2018 Fix hex literal conversion (o2enco fpucpu:)
07:21 19/07/2018 Improve 'convert' (o2expr.bas convert)
18:10 18/07/2018 Support unprototyped methods in virtual classes (o2decl.bas ! 03, o2expl.bas p2)
10:52 17/07/2018 Fix method default params (o2decl.bas wt="sys")
19:35 02/07/2018 Support macrofunctions return 'any' as well as 'any*' (o2pars.bas "any")
10:53 29/06/2018 Align string literals (o2enco.bas /+4 hw0)
07:07 24/06/2018 Add Block termination error descript (o2glob.bas cln )
15:45 22/06/2018 Support implicit goto linenum. (o2tran.bas "then")
15:55 11/06/2018 Support 'end namespace' (o2tran.bas "end")
15:30 11/06/2018 Revoke skip. (o2tran.bas o2keyw.bas)
15:01 11/06/2018 Fix namespace low level call (o2tran.bas wpfx="")
14:59 11/06/2018 Fix namespace calls with no params (o2lexi.bas splitsi)
12:26 04/06/2018 Support export of methods as functions: (o2sema.bas 'export)
12:01 02/06/2018 Fix 'byval' param passing (o2expl.bas d=95)
04:50 02/06/2018 Fix higher return-type: always sys (o2sema.bas o2expl.bas _retval)
19:04 30/05/2018 subs and functions identical behaviour (o2pars.bas _retval)
17:44 27/05/2018 Error trap for arrays declared with more than 1 dimension (o2decl.bas dimension)
17:18 27/05/2018 Change #tracer to #insert (o2keyw.bas)
14:43 25/05/2018 Revoke pdata (o2tran.bas sys param )

11:16 24/05/2018 Fix autoconvert lcls (o2expl.bas logas() lcl)
16:28 23/05/2018 Fix default param: left (defaultf(),i) (o2expr.bas subsas)

17:16 25/05/2018 Support #tracer (o2keyw.bas o2tran.bas o2meta,bas o2glob.bas trace)
03:12 20/05/2018 Fix return conversion short (o2expr.bas procedcall op<2)
12:19 16/05/2018 Fix ellipsis return type (o2expl.bas a=typ)
10:22 16/05/2018 Fix Macro operations. Returns insertion (o2pars.bas himac wt)
06:01 16/05/2018 Fix null macro param #endif problem (o2lexi skiplspace case 10)
17:28 15/05/2018 Fix #show capture block (o2tran.bas shs)
15:58 11/05/2018 Fix quotex marker lenw (o2lexi.bas quotex)
23:19 10/05/2018 Error report to include procedure name (o2tran.bas IN:)
18:49 10/05/2018 Set #autodim disabled as default (o2tran.bas relaxed=0)

06:47 10/05/2018 Fix literal number type matching (o2expr.bas nan)
05:04 10/05/2018 Fix quotex """...""" (o2lexi.bas)
03:25 10/05/2018 Fix rtl64 'getfile f,s' format (rtl64 gfs)
12:34 09/05/2018 Support goto .. when / gosub when etc (o2tran.bas 'gosub)
05:37 09/05/2018 Filing Err now generates ers message (o2hdrs.bas)
11:54 08/05/2018 Fix redim overrides #ifndef %2_buffer ... (o2keyw.bas)
01:40 08/05/2018 Fix select case type long in 64bit (o2tran.bas a=4)
04:56 04/05/2018 Fix sizeof spanof bytesof indirect type var
19:21 03/05/2018 Fix default valuse for types (o2decl.ba mlist capts)

12:28 28/04/2018 Fix function params (o2expr.bas procedures opg=1024)
04:19 28/04/2018 Support multiples without comma '%* %1=0 :' (o2pars.bas macrep)
09:56 24/04/2018 Fix filename collection (o2assm.bas comments flush 0x40)
15:16 18/04/2018 Remove member list collection (interfering with default values for type) (o2decl.bas mlist)
08:00 05/04/2018 Fix regid to adjust downgrade size of reg (o2enco.bas)
00:35 03/04/2018 Precalc function params containing functions (o2express.bas typg>=1024)
00:34 03/04/2018 Revoke #preprocess (o2meta.bas oxygen.bas)
work on o2 self-compile
10:35 29/03/2018 Partial support for quad literals (o2assm.bas o2lexi.bas encodenum)
23:04 28/03/2018 Fix dword cast for equates etc (o2enco.bas o2expr.bas)
05:50 26/03/2018 Fix 'with' to support both lvalues and rvalues (o2pars.bas 'WITH prefix)
02:24 25/03/2018 Fix namespace switchoff prior to program epilogs (o2tran.bas nsi=0)
17:07 22/03/2018 Fix stack alignment for 64bit multiassign (o2meta.bas alignment)
17:06 22/03/2018 Fix multiassign with unproto call (o2expr.bas procedcall: typ=cpuw)
08:17 22/03/2018 Fix variadic string, double and exteneded passing (o2expl.bas ellipsis)
13:18 21/03/2018 Support type defaults: vector v {y=5} (o2meta.bas "{," o2expr.bas subsas 123 )
13:16 21/03/2018 Support dim int a{1,2,3,4,5} (o2sema.bas 123)
15:24 18/03/2018 Allow makestrptr to accept numbers as pointers (o2expl.bas o2tran.bas)
12:11 13/03/2018 Primitive type param conversion f float i... (o2expr.baso2pars.bas mc=-8)
04:53 12/03/2018 support quoted symbols with spaces (o2lexi.bas ywoord uword 34 )
04:22 12/03/2018 Support quoted procnames "fn-X" (o2sema.bas primary)
04:19 12/03/2018 Change mangled alias: alias _XX@4 to "_XX@4" (o2sema.bas mangled)
11:39 11/03/2018 Support prototype coupling / overlay (o2sema.bas 'at )
22:55 10/03/2018 Corewin.inc / windows dlls extracted calls.
07:05 09/03/2018 Fix byval flagged float param (o2expl.bas d=95)
06:29 09/03/2018 Fix cdecl double and extended byval stack cleanup (o2expr.bas o2expl.bas stkb)
11:24 05/03/2018 Support cast (float*)  (o2pars.bas isptr)
05:39 05/03/2018 Support macro any* using typm to set type (o2pars.bas c=1 )
02:30 03/03/2018 Suspend goto/gosub when while if until (o2tran.bas)
15:58 02/03/2018 Remove #var/#return, rely on macro typespec (o2pars,bas o2meta.bas '/ 47)
11:51 02/03/2018 Support %0 in defs and equates (o2pars.bas wp(0) )
00:40 02/03/2018 Changed #returnvar to #var (o2pars.bas)
18:39 01/03/2018 Support macro #rest %* (o2meta.bas o2pars.bas macrep)
04:30 28/02/2018 Simplify express(.. (o2tran.bas generalexpr)
03:44 28/02/2018 Fix Assignment bycopy (o2tran.bas rps)
21:51 26/02/2018 Change generic operator to name_op, no quotes (o2meta.bas findop)
11:14 25/02/2018 Fix meta language match leftmatch isndef undefined etc (o2meta.bas match)
07:08 25/02/2018 Changed #returnvar (o2pars.bas)
11:28 24/02/2018 New protocol for defining macro operations (o2meta.bas o2tran.bas)
11:24 24/02/2018 Fix excessive saving in macro operators. Support ."register" instead (o2meta.bas)
04:26 24/02/2018 Fix 1param pseudodassign byref (o2expr.bas eqf)
13:54 23/02/2018 Support generic_op (o2meta.bas findop)
15:31 22/02/2018 Support widthof for chars etc (o2pars.bas)
07:47 22/02/2018 Fix pointer return type (as byte*) (o2expl.bas o2expr.bas o2par.bas o2sema.bas)
08:25 21/02/2018 Refactor isendofexpress and capts (o2lexi.bas o2glob.bas o2pars.bas opname endex)
05:54 21/02/2018 Support goto/gosub x if/when ... (o2tran.bas)
04:52 21/02/2018 Support 'redo' similar to continue (o2tran.bas 'redo)
04:16 21/02/2018 Fix byte accum type --> int accum type (o2expr.bas lent<cpuw )
13:25 20/02/2018 Fix byte to string conversion (o2enco.bas)
10:24 20/02/2018 Support break if / when ... (o2tran.bas 'break)
02:20 20/02/2018 Support exit when a>b (o2tran.bas)
00:08 20/02/2018 Support continue / Repeat until / while / when a>b (o2tran,bas 'continue)
20:03 19/02/2018 Decompose while..wend into do and if (o2tran.bas while o2lexi.bas capts ':=')
18:40 19/02/2018 New do {...} loop while when until (o2tran.bas 'do 'loop)
12:05 19/02/2018 nosig option for functions for making unprototyped calls (o2 sema.bas nosig)
08:05 18/02/2018 Review for .. step expression (o2sema.bas stepper)
19:46 16/02/2018 Fix & h1 hex number/variable confusion (o2meta.bas precedence case 38 )
13:15 16/02/2018 Review Void* (o2decl.bas o2expl.bas o2sema.bas void types)
11:37 15/02/2018 Fix lpvoid array indirection, converting to sys (o2decl.bas tind)
18:51 14/02/2018 Support null in meta language (o2meta.bas null)
05:30 14/02/2018 Fix null for double type on 32bit (o2expl.bas &h68 push 0 )
10:44 13/02/2018 Fix 64bit str(v,d) decimal places (param position)(o2pars.bas identype cpuw=8)
13:28 12/02/2018 replace void* type with sys variables (o2sema.bas o2decl.bas o2glob.bas sigs, sigd)
20:18 11/02/2018 Support hibyte and lobyte macros (o2keyw.bas)
13:17 10/02/2018 #noinit only works when there are no string vars (o2expl noin)
12:18 10/02/2018 Fix init of all local vars (o2expl.bas managelocal)
11:43 08/02/2018 Revoke elif and fi (o2keyw.bas o2keyw.dat o2meta.bas)
11:22 08/02/2018 Fix blank lines in asm listing (o2lexi.bas encrlf)
11:20 08/02/2018 Fix 64bit str and val autoconversion (o2enco.bas cvt)
11:18 08/02/2018 Rollback to 18:44 02/02/2018 (o2glob.bas o2expl.bas o2expr.bas)

12:41 07/02/2018 Encode param expressions and conversions in advance (o2expr.bas o2expl.bas)
16:24 05/02/2018 Extend 'spill' zone to 64 bytes (8 params) (o2expl.bas tmpstk)
16:22 05/02/2018 Process all param expressions befor procedure (o2expr.bas o2expl.bas)
09:45 04/02/2018 Provide default 32 byte spill zone for 64 bit (o2expl.bas sub rsp,32)

18:44 02/02/2018 Support "using" (o2keyw.bas)
17:05 02/02/2018 Revoke macro support for lib library use include #file (o2pars.bas lexiword)
12:08 31/01/2018 Fix double array calc in unassigned expressions (o2tran.bas)
10:31 30/01/2018 Reduce further hasm | codings |da |lr |rg |rs |rt
20:02 29/01/2018 Support macro default params, unassigned values (o2meta.bas)
18:14 29/01/2018 Rework local workspace optimisations (o2expl.bas savestack ss)
15:35 29/01/2018 Revoke internal |ss |sr |sx
04:22 29/01/2018 Revoke internal encodings |go 1 |go 2 |go 3 |as (o2tran.bas o2enco.bas itran)
11:51 28/01/2018 'end' inside function now returns (o2tran.bas)
10:39 28/01/2018 Refactor _exit_cnd etc _end_cnd (o2glob.bas o2tran.bas o2sema.bas)
10:07 28/01/2018 Support single line macro if .. then .. (o2tran.bas)
20:04 27/01/2018 Support boolean assign, if, elseif, while macro operations. (02meta.bas o2tran.bas)
00:34 27/01/2018 Revoke variadic macro (o2pars.bas ...)
22:44 24/01/2018 Support macro default params (o2meta.bas o2pars.bas, o2expr.bas)
19:52 17/01/2018 Revoke conditional operators use with if/elseif/while blocks (o2tran.bas)
12:10 15/01/2018 Revoke members (o2decl.bas o2pars.bas)
15:29 13/01/2018 Prevent declarations inside functions (o2sema.bas =18 atf)
20:48 12/01/2018 Fix compiling partial views for -a and -i options (oxygen.bas vew=3)
18:23 12/01/2018 Fix 64bit calling / lookahead declare (o2sema.bas atf=atx)
03:03 10/01/2018 Support #return type expression (o2pars.bas himac #{ )
04:00 09/01/2018 Fix / refactor macro ##v## (o2lexi.bas replacewd )
04:54 08/01/2018 Remove PB macro clauses (o2meta.bas 109)
04:16 06/01/2018 Support naked expressions a+b (o2tran.bas 61)
18:31 03/01/2018 Support &&= ||= ^^= (o2tran.bas o2pars.bas o2expl.bas cpa)
10:50 03/01/2018 Support 'continue for' with stepping (o2tran.bas _step)

Release A43

17:26 31/12/2017 continue and break comply with 'C' usage (o2tran.bas)
14:02 30/12/2017 Revoke fpu,cpu,leaf calling conventions but support fpu type
17:14 28/12/2017 Support && || ^^ operations for integers (o2enco.bas boolev)
11:23 27/12/2017 Fix op 32 for literal ints (o2enco.bas case 32)
13:33 26/12/2017 Remove remnants of bitwoise logic from floats (o2enco.bas ins)
13:57 25/12/2017 Fix dim b at a as ... (o2sema.bas "at")
12:31 25/12/2017 Fix const metaval (o2meta.bas rmwops inserts wp )
09:46 25/12/2017 Fix negative constants (o2pars.bas mword ascw=asc(wr) )
11:40 24/12/2017 string macroname / type confusion (o2sema.bas preproto w5)
03:22 24/12/2017iword in lexiword "(  (o2pars.bas)
17:51 23/12/2017 Fix operator duplication (o2meta.bas precedence identop skiplspace)
21:19 22/12/2017 Fix copying after higher type eval (o2meta.bas owb)
17:33 22/12/2017 SSE4.2 instructions popcnt and lzcnt (o2assm.bas)
14:06 22/12/2017 Fix and =, + = (o2pars.bas identop skiplspace)
17:47 20/12/2017 Fix decomposition of higher expression nestings (o2meta,bas hz)
11:35 20/12/2017 Fix _bool_ to operate with #unique on.  #undef _bool_ (o2tran.bas)
19:38 19/12/2017 Fix operator conservation (o2meta.bas mixh b=op )
22:16 18/12/2017 New higher operations model (o2meta.bas "save" )
11:23 18/12/2017 Fix operator name boundary (o2pars.bas identop: i=swd+lenw)
09:44 15/12/2017 Support 'dim as' in types and classes (o2decl.bas as 4,)
09:59 14/12/2017 Dim can now be used in types. (no longer denotes static vars in classes) (o2decl.bas)
10:39 06/12/2017 Fix addr on line numbers: addr 100 (o2tran.bas 'addr)
12:41 15/11/2017 Fix Arrays precedence, not using captarray (o2expre.bas op=-1)
11:17 14/11/2017 Fix conflict between functions and ( ) blocks (o2tran.bas o2lexi.bas fixrobr)
22:21 13/11/2017 Fix bind overrides (o2sema,bas all except vars)
04:51 08/11/2017 Fix array precedence problem (o2expr.bas captarray)
13:09 13/10/2017 Float Macro expressions without brackets (o2expr.bas floatmacros capts)
13:08 13/10/2017 Fix trig with extended types (o2enco.bas =128)
14:17 09/10/2017 Keyword Macro guidbin(s) byval guidval(guid{},s)  (o2keyw.bas
14:12 09/10/2017 Support 'use' same as 'uses' (o2keyw.bas)
13:56 09/10/2017 Support assignment by copy from functions and expressions (o2tran.bas)
13:54 09/10/2017 Support nested function params 'byval' (o2expr.bas bvg)
13:52 09/10/2017 Support anon params for double ended functions: GUID {} (o2meta.bas dataset )
04:32 09/10/2017 Guidval now returns pointer to guid (o2runt.bas also RTL32.inc RTL64.inc)
03:09 21/09/2017 New keyword 'uses' include once (o2keyw.bas)
03:05 21/09/2017 Faster copyn / copy (o2runt.bas)
18:29 18/09/2017 Lexiword / paths (o2lexi.bas)
13:41 18/09/2017 General array index test & cleanup (o2express.bas)
04:19 18/09/2017 General logic cleanup arrays / objects / findmemb nextmemb nextproc

06:19 12/09/2017 Sync hash coding record with entity record. same index. (o2glob.bas o2reco.bas addm addmin lookupm ...)
04:44 12/09/2017 Improve name matching for lookup (o2reco.bas cmpsp)
08:43 11/09/2017 Improve buffering in replacewdt and replacewd (o2lexi.bas)
06:38 11/09/2017 Revoke 'indexers' and 'offset'. (o2tran.bas)
00:18 08/09/2017 Revoke inner functions and classes. Use macros instead, or place outside.

00:21 07/09/2017 Rework metaval macro operands (o2meta.bas mword nvaldone rmwops )
21:31 06/09/2017 Revoke leftmatch in matalanguage. Use match instead  (o2meta.bas)
15:38 05/09/2017 Revoke extincli early 'def' expansion (o2tran.bas typo=18)
15:37 05/09/2017 Extend #list to display namespace of symbol and its source file name (o2tran.bas)
15:35 05/09/2017 Extend entity record to include source file name index and namespace index (o2reco.bas)
13:54 04/09/2017 Separate hdrs activities from tran (oxygen.bas o2lob.bas o2tran.bas o2sema.bas o2hdrs.bas independent cnsl eord)

12:34 04/09/2017 Cleanup inferred type (o2sema.bas infer)
02:40 03/09/2017 Revoke 'let' options but leave simple assignments. (o2sema.bas varfrom...)
04:27 02/09/2017 Fix include once ... (o2meta.bas once)
22:20 01/09/2017 Deactivate reserved words (o2reco.bas addm)
22:18 01/09/2017 Fix 'unique' with scopes and namespaces (o2reco.bas addm uniq )
02:15 01/09/2017 Macro unique symbol naming, more user-friendly scheme: (o2pars.bas chr(127)+w4)
07:08 31/08/2017 Remove obsolete runtime binding routines from o2runt.bas rtl32.inc and rtl64.inc
07:06 31/08/2017 Rootpath() remembers the command file path (o2pars.bas co=mid)
07:03 31/08/2017 Support 'include' automatic search for files in inc folder (o2meta.bas p=-1)
13:59 29/08/2017 Fix let a=b for higher type (by copying) (o2sema.bas parx=1)
07:03 29/08/2017 Support include filenames implicit '.inc' (o2meta.bas ".inc")
00:35 29/08/2017 Fix ifndef acceptance of numbers etc (o2meta.bas 106 mp<>0)
00:34 29/08/2017 Fix isa isalpha and isw and isk upper ascii range 0x7f to 0xf7 (o2lexi.bas)
22:55 28/08/2017 Fix Let multi assign left and multiassign right (o2sema.bas varfrom)
00:18 28/08/2017 Compact declarations. combine metatypes -5 -6 -7 to -5

13:35 26/08/2017 Bind internal: create bound vars directly (o2sema.bas addrc)
12:36 26/08/2017 Use internal NewTmpName for macro symbols. chr(127)+serial (o2meta.bas o2pars.bas o2reco.bas)
12:27 26/08/2017 Use internal chr(126) for variables binding marker (o2decl.bas o2sema.bas)
12:21 26/08/2017 Suppress direct coupling of variables, except internals: int v at @w (o2sema.bas
11:26 26/08/2017 Support literals in meta conditional expressions: #if defined 42 (o2meta.bas)
21:20 25/08/2017 Support default includepath with <..> <filename.inc> (o2meta.bas o2lexi.bas)
08:09 25/08/2017 Infer string literals as string type, not bstring type
07:25 25/08/2017 Fix infering type from literal (o2pars.bas typeof)
05:17 25/08/2017 Alter naming sheme for temp vars (o2meta.bas o2decl.bas newTmpName)
05:15 25/08/2017 Fix macro unique serialisation of params on each instance (o2pars.bas o2meta.bas replacewdt)
03:57 24/08/2017 Extend 'bind' to support variables mapped to a buffer for sharing with dlls etc (o2sema.bas addrc)
13:27 23/08/2017 Fix compound operands: int v at p.s (o2pars.bas CONST o2decl.bas "="+ enc(va "+...)
06:22 23/08/2017 Fix 'at' anomalies. support reg var: sys v at @ecx (o2decl.bas o2expl.bas o2sema.bas o2tran.bas)
22:31 21/08/2017 Remove static/virtual properties. Make dim/static to class. no direct inheritance.
17:58 21/08/2017 Nullify public, protected and private (o2decl.bas o2pars.bas)
OxygenBasicN.zip
13:23 21/08/2017 Def macros escapes %%n to %n only with %1 to %9 (o2pars.bas macres)
08:29 20/08/2017 Make outer functions and subs equivalent to methods (within classes) (o2decl.bas o2tran.bas n=13)
11:22 18/08/2017 Revoke pseudo-assign marker in prototypes f(int a,b,= c,d). (pseudo opf eqf)
09:38 17/08/2017 Refactor captarel, rename as captarray (o2lexi.bas o2meta.bas )
09:36 17/08/2017 Remove captex, replace with capts (o2lexi.bas o2pars.bas in himac() )
22:09 12/08/2017 Suspend Type Initialiers support (o2decl.bas o2keyword.bas)
17:48 10/08/2017 Initialiser stored in mytype_init macro / 'new' supports it. (o2keyw.bas)
10:48 10/08/2017 Support single liner types with initialisers and union ',='
22:36 09/08/2017 Support type initialisers (o2decl.bas o2tran.bas sigu vlist membervals with)
12:58 07/08/2017 Fix iif compound comparators: (a>=b ? c : d) (o2meta.bas iif)
05:26 07/08/2017 Compaction of Binaries (upx --brute oxygen.dll ) etc
19:07 08/07/2017 Fix 'convert' when used with 'let' (o2sema.bas o2tran.bas varfromexpression .. as string)
19:12 05/07/2017 Support Disassociated objects (o2expl.bas necxadjust: )
10:02 28/06/2017 Fix Let for object copying (o2sema.bas varfromexpression rps=0 )
04:21 28/06/2017 Extend new/del optional calls to constructor/destructor
04:19 28/06/2017 Fix let var from expression (o2sema.bas asc(sog,a) )
05:43 27/06/2017 Suppress #ifdef #ifndef #if def error generation (o2meta.bas mword)
15:30 26/06/2017 New version of 'new' to support extern classes table pointers (o2keyw.bas)
15:08 21/06/2017 Support ptr/* : dim as int ptr a, ptr b (o2sema.bas 'ptr 1,')
14:57 21/06/2017 Support addr eax,@v (o2tran.bas 'ADDR pword(.. )
03:56 20/06/2017 Fix late call vectors for 'call' and 'addr' (o2tran.bas pword("@"+... )
08:56 05/06/2017 No colon replacement in classes (o2decl.bas makeheaders)
04:17 03/06/2017 Support single line classes including methods (o2decl.bas makeheaders)
10:33 31/05/2017 Fix #lookahead (o2decl.bas makeheaders lenw=0 etc)
03:17 31/05/2017 Fix macros containing call (o2expr.bas "call" pword)
03:16 31/05/2017 Fix #compact inner functions (o2decl.bas captprocbody recurse)
14:21 28/05/2017 Fix class member macro expansion (o2decl.bas o2pars.bas expandmac)
22:50 27/05/2017 Allow low level macro parameter sets for procedures (o2expr.bas =18 )
16:00 27/05/2017 Fix #ifdef #ifndef #if def #if ndef to support members (o2 meta.bas mword)
13:07 27/05/2017 Fix CaptProcBody for recursion / inner functions (o2decl.bas)
08:31 27/05/2017 Remove early macro expansion (o2meta.bas precedence 18 20)
08:28 27/05/2017 Automate DateTime Stamping for Oxygen.bas (go.bat tools/oxydatetimestamper.o2bas)
01:47 27/05/2017 Fix 'sizeof' for pointered members (o2pars.bas attributes varf elsize)
13:50 26/05/2017 Support Extern classes inheriting internal methods with correct offset (o2expl.bas vtq)
03:50 25/05/2017 Allow colon separators in types (o2decl.bas ascn=58)
12:30 22/05/2017 Simplify A+=B*C --> as text: A=A+B*C. normal predence rules (o2tran.bas generalexpr o2pars.bas ou+owa )
18:11 21/05/2017 TypeHigherExpress dot primitves check on arrays and functions (ascii 40 and 91)
18:10 21/05/2017 Fix precedence handling of array indexes (o2expr.bas)
22:46 20/05/2017 Fix precedence handling of procedures (o2expr.bas express typa1 varf>7)
18:01 20/05/2017 Fix colon label / instruction discrimination (o2pars.bas mword() labels nl)
16:18 20/05/2017 Fix 'del' macro (o2keyw.bas del %1)
18:13 19/05/2017 Protect against infinite compile-time recursion in hiex (o2pars.bas o2tran.bas mct)
16:22 18/05/2017 Release A43
16:19 18/05/2017 Fix convert block (o2expr.bas capts)
15:08 18/05/2017 Fix pointered UDT params passing to unprototyped function (o2expl.bas noproto)
03:32 18/05/2017 Release A43
03:31 18/05/2017 Revoke 'exposed' (o2tran.bas o2sema.bas o2link.bas)
01:31 18/05/2017 Autocopy when assigning compound types (o2tran.bas rps)
00:05 02/04/2017 Remap metatypes
23:53 01/04/2017 Rework #preprocess (turn on / scoped / off. (o2meta.bas)
11:55 31/03/2017 Refactor Auto string/number conversions in expressions (o2expr.bas)
13:01 30/03/2017 Encode return type for functions etc maco(mp,5)
17:00 28/03/2017 Extend 'convert' to support expressions as well as variables & constants (o2expr.bas)
10:32 27/03/2017 Support true -1, false 0, as core macros (o2keyw.bas o2keyw.dat)
04:07 27/03/2017 Support multiassign sub objects into objects (including pvfts)
07:32 26/03/2017 Fix closing }, ... multiassign as proc param (o2expr.bas)
23:06 25/03/2017 Fix (new) Bind aliases (o2enco.bas addrc)
22:33 24/03/2017 Support multiassign compound types directly into extern objects avoiding pvfts and private vars
21:09 24/03/2017 Fix private flag encoding '__' and pvft '.___' (o2decl.bas)
18:50 24/03/2017 Support mixed multiassign to primitive arrays (o2expr.bas)
22:12 23/03/2017 Support multiassign for higher member types (using copy) (o2expr.bas multiassigns:)
09:52 23/03/2017 New 'bind' supports predeclaration and prototypes. (o2enco.bas o2runt.bas o2tran.bas o2sema.bas rtl32.in rtl64.inc)
21:45 22/03/2017 Support short form inner functions and subs in C format int f { return a+b} (o2tran.bas nproto)
18:41 22/03/2017 Replace cendcomcomline with endcontline, supporting , _ \ line continuations (o2lexi.bas o2decl.bas o2tran.bas)
13:42 22/03/2017 Fix short-form function C style: int fun(int a)=a*3 (o2tran.bas o2sema.bas prototype)
13:12 22/03/2017 Remove #indexbase, use indexbase instead (o2keyw.bas o2keyw.dat)
10:34 22/03/2017 Remove capto (o2lexi.bas), use captureblock instead (o2asm.bas)
10:29 22/03/2017 Optimize mcword and replacewdt (o2lexi.bas)
21:55 20/03/2017 bword() to aword() deduplication + lcase control (o2lexi.bas qot)
05:53 20/03/2017 Nextinstruct() skip line continuations (o2lexi.bas)
05:49 20/03/2017 Optimize Lexer tword() : non-blanking. skip suffixes
01:16 19/03/2017 Fix block capture to prevent suffix stripping (o2lexi.bas capturend aword)
11:16 17/03/2017 Revoke writestate, internal use only (o2tran.bas o2keyw.bas o2keyw.txt)
10:59 17/03/2017 Revoke o2 API calls: o2_get, o2_put and o2_assemble. o2_basic o2_asmo now return o2 binary code pointer. (oxygen.bas)
22:42 16/03/2017 Annotate o2_ functions in oxygen.bas
21:32 14/03/2017 Disuse |na intermediate coding (assignment varname o2tran.bas)
21:29 14/03/2017 Change |va coding for variable declarations - expose name etc (o2decl.bas o2enco.bas)
18:26 14/03/2017 Include macro function expansion (hiex) within #show.
12:16 14/03/2017 #show"text.txt" output to file instead of MessageBox
21:39 10/03/2017 Fix macro polymorphism / testing existance of terms (o2meta.bas o2pars.bas 109 himac)
21:35 10/03/2017 Revoke #ifexist #ifnexist: use #ifdef #ifndef instead
13:16 10/03/2017 Extend use of 'del' to include strings, bstrings as well as dynamic objects
13:13 10/03/2017 Fix metacode comparators #if typecodeof s > 0xe0 ...  (o2meta.bas)
13:11 10/03/2017 Support 'dim static' for 'redim' and other macros requiring static vars (o2tran.bas)
06:13 10/03/2017 Deprecate 'global' use 'dim' instead
13:07 04/03/2017 Support any bracketed terms in def: (){}[] (o2pars.bas macres capture)
10:05 04/03/2017 Fix identifying members of compound arrays as primitive (o2expr.bas nthe) 
10:03 04/03/2017 Fix let object = class.method (o2expr.bas if varf>8 then goto procedcall)
21:34 02/03/2017 Prevent macro interp in compound types: right as long (o2decl.bas varname)
11:03 02/03/2017 Revoke keywords basic o2h asm #basic #asm. No low level syntax switching
12:06 01/03/2017 Revoke Data and Dataspace / to use embedfile for raw data instead (o2tran.bas o2keyw.bas)
22:48 28/02/2017 Add core macros loword, hiword, redim, right
22:46 28/02/2017 Support Core hi level macros (metatype -20) right(s,i)
08:57 27/02/2017 Fixes for macro operators (o2expr.bas o2tran.bas hiex rps=2)
21:12 13/12/2016 Support 'loop': while/do ... loop ' compatibility with other BASICs
21:12 13/12/2016 Support 'dim shared' (compatibility with FreeBasic
11:08 11/12/2016 release
09:47 10/12/2016 release
07:42 25/11/2016 release
17:56 19/11/2016 remove ccomment related code (o2lexi.bas)
11:59 19/11/2016 Strip C comments at lineprep (o2lexi.bas endcatline ccomment)
10:35 19/11/2016 Support char** array:  main(int argc, char**argv) (o2expr.bas aint)
11:41 18/11/2016 Enum must not use (..) to delimit block
11:13 18/11/2016 Support embedded #if as well as #ifdef .. #endif (o2decl.bas)
10:52 18/11/2016 Accept bit fields in struct members: unsigned iint : 1 (o2decl.bas)
12:24 17/11/2016 Furthe work on enumerations
12:22 17/11/2016 Support int (fn)() 'assumed function pointer: int (*fn)()
17:52 16/11/2016 Support as sys return: struct st* fn()
15:59 16/11/2016 Support as sys return:  typedef struct st* (..)(..)
15:59 16/11/2016 Support as sys return:  typedef enum nn (..)(..)
11:12 16/11/2016 Support as sys param: struct st*, enum en
06:56 15/11/2016 Support '\' macro line continuation marker (o2meta.bas metaval ascw=92)
00:00 13/11/2016 release
08:33 08/11/2016 Multiassign bypasses unions (o2pars.bas o2expr.bas nextel)
07:42 02/11/2016 Fix backet rules nigb / igb (o2tran.bas o2expr.bas)
21:42 30/10/2016 precedence: macro expansion immediately following word (o2meta.bas)
21:41 30/10/2016 perform precedence before procs to expand macros
15:53 28/10/2016 quad functions returning upper bits in edx, not the fpu (fpu for for calcs)
10:30 27/10/2016 working on experimental 'neo' unified type parsing
17:12 26/10/2016 Fix expandexpr() comment 'then' bug (o2pars.bas)
11:34 26/10/2016 Support #ifdef #ifndef #else #endif inside structs (o2decl.bas types)
16:21 25/10/2016 Fix inner union .. end union syntax
10:03 23/10/2016 Fix float for .. step .. next comparator (supress float conversion) use 0 instead of typa1
07:50 17/10/2016 support bytesof as dataset parameter (like countsof) synthtexture imgn,int{1,2,3,4},bytesof  (o2pars.bas elsz)
10:27 26/09/2016 consolidate captexpr --> capts (o2pars.bas o2lexi.bas)
09:40 25/09/2016 expandexpr to detect iif (?:) ( o2pars.bas o2expr.bas o2tran.bas)
17:44 21/09/2016 working on higher level iif (o2expr.bas ndo)
11:05 21/09/2016 Fix jn for nexted strings . (o2expr.bas njn flag)
08:37 18/09/2016 Fix higher expressions multiparams (o2expr.bas endofexpress)
18:03 17/09/2016 Fix string concatenation (itr gc) s=t+(a>b ? "a" : "b" ) + u
09:02 17/09/2016 Fix numeric expression form: v=100+(a>b ? 10 : 20 )+1000 (o2expr.bas wtn)
10:42 16/09/2016 Fix embedded string assignments (A>B ? s="a" : s="b" ) (o2expr.bas)
10:41 16/09/2016 Fix string assignments s=(A>B ? "a" : "b" ) (o2expr.bas ndo)
17:55 15/09/2016 Fix embedded assignments for floats & ints: = (A>B ? E=C : E=D ) (o2tran.bas o2sema.bas 02expr.bas asxp flag)
11:09 15/09/2016 Support C style IIF : (A>B ? C : D )  (o2expr.bas wt1 o2meta.bas ndo )
09:59 14/09/2016 Fix explicit namespace calls (o2expl.bas preparecall lookupm)
18:01 13/09/2016 Fix explicit namespace lookup (o2reco.bas lookupm wk)
11:00 10/09/2016 Fix negative constants (o2pars.bas mword: non dotted names)
10:28 09/09/2016 Refactor ctype. tyd flag set for typedef (o2pars.bas o2tran.bas o2glob.bas tyd)
11:10 07/09/2016 Fix char & wchar explicit signature (o2glob.bas idtype)
09:11 07/09/2016 Add movsxd 32bit to 64 bit (o2assm.bas) and apply (o2enco.bas cvta)
12:59 06/09/2016 Fix Asm movsx and movzx for word/short reg,reg
17:59 05/09/2016 Fix signed/unsigned short/long combos (o2pars.bas ctype)
16:12 03/09/2016 Fix signed byte / word / dword / quad conversions (o2enco.bas cvt cpufpu)
12:16 03/09/2016 Support sbyte: signed bytes (o2pars.bas ctype o2glob.bas o2keyw.bas sbyte)
20:41 02/09/2016 Support unsigned char as byte (o2pars.bas ctype "char")

08:44 31/08/2016 Fix negative signed variable or block  (o2expr.bas case 43 to 45 "_neg ")
20:50 29/08/2016 Fix & hex/bin/oct detection (o2lexi.bas wrd 38)
09:28 27/08/2016 Fix negative case equates. (o2sema.bas SolveCaseSym()09:43 27/08/2016 ng)
10:29 23/08/2016 Fix direct char members assignment (o2tran.bas left side)
12:04 22/08/2016 Fix member arrays of pointered elements aint elsize o2expr.bas
20:25 21/08/2016 Fix extern vtp for compatibility with SIH (o2decl.bas)
09:24 21/08/2016 Remove excess nesn (o2decl.bas)
08:24 17/08/2016 Support members.meth() including arrays of members
08:52 15/08/2016 Restrict access to class direct private/protected members (o2pars.bas matchm)
13:14 09/08/2016 Fix elsize on pointered members (o2pars readvals)
11:56 02/08/2016 Support access to codebase address: ._code_ or ._main_ (o2hdrs.bas)

11:02 20/07/2016 Support assignment operators u+=V --> u=u+v
11:55 19/07/2016 Support: vector u=v+vector{10,10,10}+w
11:13 18/07/2016 TypeHigherExpr debug: if isa()
09:25 17/07/2016 Refactor local var memory alloc o2decl.bas vars() mlcl)
11:16 16/07/2016 Support mixed higher and primitive params
12:10 15/07/2016 Support HigherTypes 'while' as well as 'if' and 'elseif'
12:10 15/07/2016 Working on sub MixHigherExpr(..
07:05 13/07/2016 Remove 'operations' keyword
12:09 12/07/2016 Working on mixed higher and primitive params
11:47 08/07/2016 Further work on RPS / code macros
12:07 07/07/2016 Overload procs with higher types: TypeHigherExpr(..)
22:08 06/07/2016 Predefine op output variables
11:46 06/07/2016 Testing with inc\MathVector.inc
21:27 05/07/2016 Support higher type NOT: if not V>W
20:53 05/07/2016 Support higher type conditionals:  if V>W
08:16 05/07/2016 Support osg arrays a[i]=
10:09 04/07/2016 Support for unary negative in HigherExpr
08:50 03/07/2016 Support datasets countof: f( int{1,2,3,4,5}, countof )
06:56 03/07/2016 Support Typed datasets: f( int{1,2,3,4,5} )
21:55 02/07/2016 Support data sets passed as fun param (double only): f({1, 2.5, 3})
12:19 02/07/2016 working on Higher expressions for IF / WHILE / CASE feasability
22:10 01/07/2016 Working on Express() - htyp block cleanup
12:11 01/07/2016 Working nesting in HigherExpr()
12:10 01/07/2016 Remove decomposer
21:49 30/06/2016 htypes removal from express()
11:31 30/06/2016 Working on Precedence to incorporate Decomposer
11:28 30/06/2016 Function pointer variables: maco(mp,0) (sub vars) set to &h11f (was &h1ff)
11:12 30/06/2016 Objects: Change maco(mp,0) to store higher-type code (index=typ-htyp)
21:49 29/06/2016 testing decomposer with all assignment expressions (opengl)
12:17 28/06/2016 testing with decomposed expressions
23:09 27/06/2016 testing with macros+methods (let statements
10:56 26/06/2016 working on type identification for higherexpr
10:50 26/06/2016 decompose now retains functions for higherexpr transform
11:32 25/06/2016 working on higherexpr & decompose: operation function types
22:44 24/06/2016 testing higherexpr (o2pars.bas)
13:06 24/06/2016 refactor wordval()
11:53 23/06/2016 cleanup numberq, integrate numco into wrd()
23:51 22/06/2016 nmb flag in wrd() set when ascii 46/48-57 number detected
12:24 22/06/2016 working on higher expression translation (op macros)
11:18 21/06/2016 take out various o2expl functions such as wleaedi
11:14 21/06/2016 hasm cleanup: taking out |aa |ad |mv |it |ia , using assm directly
12:42 20/06/2016 quote flag: nquot to qot (reverse logic)
12:24 20/06/2016 rework wrd and mword parsing
22:36 19/06/2016 wrd supports :: inside a word .. addmin and lookupm supports
11:35 19/06/2016 Work on  scoping support in Preprocessor
08:25 19/06/2016 remove lineprep & tranpass 1 from compiling procedure
08:25 19/06/2016 Add ifexist  #ifnexist #evel to preprocessor
12:11 18/06/2016 itr testing #ifdef #ifndef for variable
12:08 18/06/2016 working on early metaprogramming, expansion of macros etc
11:03 18/06/2016 remove pres mode from inserts. (o2lex.bas inserts())
22:07 17/06/2016 decomposer leaves float macro functions intact (nested)
22:06 17/06/2016 decomposer supports fun({1,2,3})
12:25 17/06/2016 decomposer to extract whole functions
08:24 17/06/2016 extend CreateVarFromExpression to support MultiAssign : let a={1,2,3,4}
23:08 16/06/2016 decomposer testing with directexpr:
12:18 16/06/2016 decomposer routines debugged (also support bracketless calls)
12:14 15/06/2016 working on expression decompose
22:15 14/06/2016 working on macromember invokations
11:35 14/06/2016 MacroMember more robust parsing for member names
11:34 14/06/2016 Lexer bword (callingwrd) for faster inner parsing
22:43 11/06/2016 Cleanup identop calls
10:39 11/06/2016 Reprocess statements flag (o2expr.bas o2tran.bas rps)
09:04 11/06/2016 Remove cef (c translator blocks (cleanup)
08:50 11/06/2016 Change hasm code marker from '$' to '|'
07:54 11/06/2016 Restrict def block param to ( ) brackets, not { } not [ ]
10:10 10/06/2016 Reworking operator overloading (using macros)
10:10 10/06/2016 Support dot quote names: vectorOp."+" (o2lexi.bas wrd)
21:46 09/06/2016 Support MemberConstructors() MemberDestructors() (o2decl.bas o2tran.bas)
21:45 09/06/2016 Support lower level code pass-thru .. $$ (o2tran.bas case 35)
21:48 09/06/2016 Support BaseConstructor BaseDestructor access (o2decl.bas)
22:13 07/06/2016 Fix 'with' part name with leading dot (o2pars.bas mword)
21:00 07/06/2016 Fix expressions -1-2, --a, ++a (o2tran.bas o2expr.bas asc(s,swd+1)
21:41 06/06/2016 Fix compacting for methods (o2enco.bas MarkUsed p=2)
10:27 06/06/2016 Fix declare colon termination (o2pars.bas --> o2lexi.bas endcatline sr1 sr2)
23:12 05/06/2016 Fix support mixed type for..to (o2expr.bas precalc cvtai)
10:38 05/06/2016 Fix case negative numbers (o2sema resolvecase)
08:49 04/06/2016 Calllist currently redundant
08:49 04/06/2016 Namespace codings added to proclist
10:36 03/06/2016 Add calllist for forward references to procedures
11:23 01/06/2016 remove inhibo flag (o2tran.bas tranpass=3)
17:59 31/05/2016 Working on #Compact / supporting namespaces
17:50 30/05/2016 Support namespace member types in classes
11:03 30/05/2016 C-style dim with namespace prefixes (nsp1)
09:49 30/05/2016 Resolve method calls where class is defined in another namespace
10:18 29/05/2016 Debug/Testing namespaces thru asm .. linker
12:03 26/05/2016 Working on linker to support low-level namespaces
11:00 25/05/2016 Working on namespaces for jmp call & functions
10:24 25/05/2016 Fix For .. step expressions (o2sema.bas iterationspec cnd=0)
12:38 24/05/2016 Fix namespace prefix for labels & goto gosub
10:37 21/05/2016 Fix dynamic compiling: (mle o2tran.bas o2glob.bas o2reco.bas o2sema.bas: initdeftables )
10:07 20/05/2016 Working on dynamic compile loss of symbols problem (new hash encoder?)
09:48 28/04/2016 Fix 'struct' predefined substructures (o2decl.bas types uni-=1)
22:03 27/04/2016 Backwards hash searching (o2reco.bas addmin lookupm macb() o2decl.bas unnest)
20:57 24/04/2016 Implement namespace with C++ notation A::B

Alpha041

09:59 24/04/2016  working on namespaces
09:41 22/04/2016  Fix metaval to include outer brackets. (o2meta.bas metaval igb) 
09:37 20/04/2016  fix consts negative parenth:  const int W=-(V) (o2meta.bas metaval _neg )
17:17 15/04/2016  Compiler upgrade Freebasic 0.9 to 1.05 (o2lexi.bas mk2 mk4 mk8 hashid no byval, must use strptr)
17:17 15/04/2016  Compiler upgrade Freebasic 0.9 to 1.05 (o2glob.bas cbool to cboolf)
--oxygenbasicH.zip
10:08 13/04/2016  Def macro lookahead for bracketed param (o2pars.bas macres)
10:08 13/04/2016  Fix param strptr bug (o2pars.bas case 21)
16:50 08/04/2016  Fix wex interference with direct member arrays (o2expr.bas wex="")
09:03 08/04/2016  Fix for 'stray comma' bug (o2pars mword mc -23 typ=cpuw)
09:56 07/04/2016  No function encoding on pass1 (tranpass<2 o2expr o2pars)
10:12 31/03/2016  Fix variadic macro: exclude '...' from substitution
21:18 23/03/2016  Adjust semantics of variadic macro params (...) single iteration
07:36 22/03/2016  Support variadic macro multi params a,b,...  (o2pars.bas himac)
11:13 21/03/2016  Fix Variadic macro ... (o2lexi.bas: replacewdt)
09:58 19/03/2016  Fix inner structs like: struct p *pp (o2decl.bas)
11:22 17/03/2016  Fix float non-compare conditional: if a+b then ... (o2expr.bas)
09:45 16/03/2016  Fix float not() for boolean operation (not bitwise) (o2enco.bas)
21:02 15/03/2016  Fix compare with and/or/xor logic for floats (assigning to float)
18:03 14/03/2016  Fix boolean logic for floats (remove bitwise logic) (o2enco.bas)

17:43 26/07/2015  Support case single quote bytes: case 'A' .. (o2sema.bas o2meta.bas caseval))
11:10 16/07/2015  Support array return: function ma() as float[] (o2sema.bas capt prepreproto o2pars.bas isptr)
21:43 14/07/2015  Fix methods returning pointers: method m() as float*
16:45 10/07/2015  inner subs and functions sharing parent locals
14:00 10/07/2015  fix short-form functions '=' as return expression
21:06 09/07/2015  Misc cleanup (o2tran.bas o2decl.bas)
10:12 09/07/2015  Refactor CaptProcHead CaptProcBody makeheaders (o2decl)
03:21 09/07/2015  #compact fix
14:59 08/07/2015  Precalculate iteration limit: for i=1 to asc(s)-96 ... (o2sema.bas iterationspec)
12:55 08/07/2015  sub/function internal cleanup (no more n=12 sub)
09:46 08/07/2015  Fix (o2pars.bas arrfix) (affecting Oxyscm.o2bas)
04:53 04/07/2015  #cpointer mode indirect arrays
17:48 03/07/2015  cleanup wva() (o2tran.bas o2sema.bas o2expl.bas)
11:55 03/07/2015  'sub' can be used as 'function'. Improved prototype parsing (o2sema.bas o2tran.bas)
12:02 02/07/2015  Let supports functions returning primitive arrays by pointer (o2sema.bas ip o2expr.bas procedcall:)
16:43 01/07/2015  Fix pchar*s[], bstring*[]
05:26 01/07/2015  Trap direct string params being passed to array builder
18:49 30/06/2015  Fix array param in prototypes, always equiv to '*'
10:08 30/06/2015  Fix pchar array assignment by address: @pc[42]=strptr s (o2expl.bas splitderef)
12:09 28/06/2015  Refactor address @ @@ resolution and indexing (o2pars.bas o2expr.bas)
10:27 28/06/2015  Fix 'at' dim in cpointer mode (o2sema.bas)
03:26 27/06/2015  Fix arrays with indirect members (including char*)
22:09 24/06/2015  Support f(string s[])  f(bstring s[])
22:04 18/06/2015  Fix string** and bstring* array args
12:29 12/06/2015  Remove obsolete o2_proc (oxygen.bas)
15:59 09/06/2015  Prevent exec of program after creating a PE file (oxygen.bas exec .. pef)
10:28 08/06/2015  '$' path derived from GetModuleFileName (not GetCommandLine) to guarantee full exe pathname
11:25 05/06/2015  Support arrays with indirect members (o2expr.bas wex wfx)
18:28 01/06/2015  #cpointer fix for char* (o2pars pword if b=0..)
11:33 29/05/2015  Fix low level call (o2expr.bas metatype -4 calling convention maco(mp,4)
14:29 26/05/2015  Var declaration optimize (o2del.bas vars-->isptr()
18:16 21/05/2015  Fix String Literal (quote) param optimization (o2expl.bas compatsig)
01:54 20/05/2015  Remove redundant code (o2pars.bas lineprocess)
01:52 20/05/2015  Fix function redeclaration (o2expl.bas addlproc)
03:03 19/05/2015  Further fix local array assignments (using local GC list)
00:46 18/05/2015  Change local variable init protocol, supporting string dim in a loop, without leaks
04:47 16/05/2015  Support macros in library name (o2tran.bas mword)
04:46 16/05/2015  Support rootpath ($) expression in declarations with 'lib'
05:44 15/05/2015  fix stringbytes
05:45 15/05/2015  limit error() string to 1024 bytes (bind error list) (runt.o2bas RTL32/64)
16:20 14/05/2015  fix local array assignments (using local GC list)
06:52 12/05/2015  fix 'function =' sys for higher types
08:30 11/05/2015  debug operator overloading using complex lib / remove typu
23:55 09/05/2015  New keyword "operations" for complex functions etc
15:40 04/05/2015  identop optimizations ( o2pars o2meta o2expr )
00:17 03/05/2015  C style improved if(..) for(..)
15:48 02/05/2015  Fix sr2 (semicolon) behaviour following a conditional (o2tran.bas sr2 sln)
01:46 02/05/2015  #cpointer c-style pointers with arrow notation
23:23 29/04/2015  mword update (o2pars.bas)
18:59 24/04/2015  Fix semantics: typedef void (*GLUTproc)(); // GLUTproc translates as sys
13:05 20/04/2015  inline hashencode 4x (o2reco.bas 02assm.bas)
23:49 15/04/2015  Fix non-operator-overloading in procedures (o2expr.bas higher types)
20:41 10/04/2015  Fix string comparator optimization: (o2expr.bas optim)
23:45 07/04/2015  Restore prior enumeration behaviour (-2 metatype)
22:38 04/04/2015  Negative unaries for higher types (o2expr.bas o2pars.bas opneg)
13:32 03/04/2015  Fix function function-param returning pointers to primitives etc
15:51 01/04/2015  Rework enumerations. And remove enumeration metatype (-2)
23:29 31/03/2015  Introduce #eval macro evaluation: %= qty 1+2*3
17:24 28/03/2015  Implement autotype conversion in mixed op types
08:18 28/03/2015  Implement higher type operators using functions opadd opmul ...
00:11 27/03/2015  Work on higher type comparators
16:51 23/03/2015  Fix array of char* (o2expr.bas ains)
04:16 22/03/2015  Macro params unique name, and dotted name substitution


Alpha040

04:15 22/03/2015  A040 release
22:46 20/03/2015  Fix postincdec in conditional expression (o2expr.bas pid)
12:50 20/03/2015  Revoke inner function sharing local parental variables
12:21 20/03/2015  Fix for static properties in local classes (o2tran.bas (funi>1)and(n<>13) )
23:51 19/03/2015  Reintroduce operators for higher types - complex vector matrix etc.
04:06 19/03/2015  Accelerate procedure protoype matching (o2expr.bas cts)
21:02 17/03/2015  Fix higher types: always provide address (o2expr.bas "lea"  2765 412)
07:22 17/03/2015  Fix char* return (c type strings return)
22:30 13/03/2015  Fix typedef function definitions to allow pointer assignments (o2tran.bas -8 -7)
22:29 13/03/2015  Prepare for higher type operators
06:14 13/03/2015  Support self return (class methods) o2tran.bas makeheaders maco(me,0)=-3 )
16:27 12/03/2015  Fix #if (o2meta.bas #if #print)
12:56 11/03/2015  Fix /\ empty methods block linker error (o2tran.bas class len(w3))
00:14 07/03/2015  Fix space() char width spec when passed as a param: (o2expr.bas space nuls stringbytes )
00:13 07/03/2015  Fix strptr() as a parameter passed byref (o2expr.bas o2expl.bas ._direct_ )
23:32 04/03/2015  Fix Returning primitive arrays etc by pointer (o2Sema.bas w5+= ...)
23:30 04/03/2015  Remove Auto Garbage collection from Let ... (o2Sema.bas)
22:43 03/03/2015  Create StringBytes(sys n,byte), (remove from String overload) (o2keyw.bas)
21:16 03/03/2015  Dynamic Compiling: reintroduce access to declares and defs (tranpass1)
19:20 25/02/2015  Fix wide string flag for space( and nuls / (o2expr.bas)
17:18 23/02/2015  Change EmbedFile: EmbedFile filename, varname 
22:29 18/02/2015  Fix #lookahead for non declaration of string / cstyle (o2decl.bas idt)
15:08 16/02/2015  Fix #Define single quote (basic comment) vs C byte issue
05:50 16/02/2015  Fix '&' distinction between address and operator (o2meta.bas qp precedence) 
03:28 16/02/2015  Fix Void* types dim multi-assign
20:40 11/02/2015  Fix Assembler lodsd (set bit 0)
00:10 09/02/2015  Clean up method calls (o2expl.bas varf=11 rtc)
19:41 07/02/2015  Fix #Lookahead, also supporting C-style functions (o2decl.bas makeheaders)
23:29 06/02/2015  Fix Type unions '=' notation (bug caused by vitual void f(..)=0 syntax)
22:46 06/02/2015  Fix class header reader: strip comments after identified type (o2delc.bas)
21:28 06/02/2015  Reduce superquote calls to first preprocess pass. (o2lexi.bas)
16:30 06/02/2015  Further Fix (o2lexi.bas EndLineQ supporting superquotes)
10:37 06/02/2015  Further fix ' ' in #define - distinguish from basic comment
11:52 05/02/2015  Further fix to o2sema.bas Endlineq()
19:45 04/02/2015  Variadic macros: macro m(...) printl item
19:24 04/02/2015  Optional param macros using metacode: #ifexist #ifnexist
14:18 04/02/2015  Fix function typedef for IUP (function pointers treated as SYS)
14:17 04/02/2015  Support C ' ' byte notation in #define
21:55 03/02/2015  Support core procedures overloading with user procedures: metatype -16
06:22 03/02/2015  Support mixed procedure types with differing calling conventions
00:00 01/02/2015  Support overloading with vectored procedures (o2pars.bas o2sema.bas o2expr.bas -7 )
10:06 31/01/2015  Fix preocessor multiline quotes (o2sema.bas o2lexi.bas endlineq )
10:05 31/01/2015  Allow function pointer assigns : declare function f(...) = @foo
19:45 30/01/2015  Fix C style typedef for procedures: typedef (*f)(int a)
06:28 30/01/2015  Fix error reporting of 'unclosed quote' o2pars.bas o2lexi.bas: wrd / nquot
15:22 29/01/2015  Indexing optimisation for immediate num offsets: a[i+4]
05:51 29/01/2015  Fix unquoted filepath: include ..\lib.inc
21:02 24/01/2015  Fix val to terminate on '/' 47 and symbols<=44 (Also in RTL32 and RTL64)
21:28 19/01/2015  Fix Val and Valat return type: fpu (was double). Affects 64bit.
21:27 19/01/2015  Disable error trapping of unfound members in 1st pass.
07:45 17/01/2015  Interpret C style functions within 'methods' block as methods
22:46 16/01/2015  Fix short function with end comment : int f(sys i)=i*42 'comment
20:03 16/01/2015  Support 'virtual' in method declaration
20:02 16/01/2015  Support 'pure' keyword in extern
09:43 14/01/2015  Support included filepath names containing spaces
17:09 17/12/2014  Implement ValAt to read float value using a string pointer.
11:53 04/12/2014  Support for < > <= >= = <> cases: case >=10 (o2sema.bas o2tran.bas SolveCaseSym ...)
16:34 10/11/2014  Fix char auto array logic : char s="abc" : char s[16]="abc" (o2sema.bas ARRAY DATA)
12:52 04/11/2014  Fix single line array compar: if a>b[i] then ... (o2expr.bas capture )
03:31 03/11/2014  Revoke def user defined rules (o2pars.bas macrule macres)
21:33 25/10/2014  Prevent compaction elimination of "link"ed procedudures (o2sema,bas flbl(funi) )
12:06 25/10/2014  Change encodings for frac and trunc : (o2keyw.bas fprem)
01:16 25/10/2014  Fix case sensitivity (RTL64 Exit)(o2asm.bas aword)
12:43 24/10/2014  Fix param passing: float macros byref (o2expr.bas floatmacros: uex=1024)
06:07 24/10/2014  Support address of literal number @ 1.5 (o2pars.bas tmpvar)
21:49 22/10/2014  Fix doubles ellipsis / subsequent doubles (o2expl.bas apa=)
19:35 21/10/2014  Support multi args deff, without brackets : a = tan x,y : (o2expr.bas floatmacros:)
22:36 20/10/2014  Adjust for late expansion/recursion in deff macros (o2expr.bas expandmac)
14:56 20/10/2014  Support recursion in deff macros ( % prefix ) (o2asm.bas aword )
13:06 15/10/2014  Fix RTL32 hex function extend to 64 bits (from o2runt.bas hexsl)
12:21 15/10/2014  binary and octal to float: extended to 64 bits 0o10000000000 (o2runt.bas rtl32.inc rtl64.inc rcl)
04:01 15/10/2014  Fix calling with indirect types (o2expl.bas compatsig)
15:05 10/10/2014  Revoke expressions within Asm operands (o2pars.bas ResolveAsm)
00:35 10/10/2014  Fix syntax: dim x at [edx] as long. thiBasic examples. (o2sema.bas)
17:03 08/10/2014  Fix initialisation of variable of indirect type.
14:05 08/10/2014  Support function/method flexi syntax in types/classes : int (*fun)(sys n) : int fun(sys n)
19:20 04/10/2014  Asm dual 32/64 mode (o2enco.bas regid) rax ..rdi downgraded to eax..edi in 32 bit mode
21:15 22/09/2014  Fix val (now returns double, not extended) expression conversion issue (o2keyw.bas)
11:40 22/09/2014  Fix commutation n/fun() n-fun() by function. (o2expr.bas w6)
15:29 21/09/2014  Fix ASM error message format (o2assm.bas ASM ERR:)
12:01 21/09/2014  Compiler gxo2 dual console (-m) and gui use
12:01 21/09/2014  Compilers gxo2 and exo2 to ignore params after filename
21:36 19/09/2014  Fix macro appended with colon. Not to treat as label (o2pars.bas mword)
13:20 18/09/2014  Change encoding for 64bit float/double param movss movsd (o2enco.bas/o2expl.bas)
13:21 18/09/2014  Fix movsd asm instruction. (o2assm.bas)
10:50 13/09/2014  Fix float conversion rules.(o2expr.bas o2meta.bas /precedence)
14:49 23/08/2014  Fix RTL32.inc "#INF" float_to_asc
14:48 23/08/2014  Fix double d="#INF" etc. asc_to_float o2runt.bas RTL32.inc RTL64.inc
08:50 23/08/2014  Fix mixed string/number comparisons (o2expr.bas jn trgn etc.)
07:29 12/08/2014  Fix array dimensioning with fills: sys a[..]={1,2,3 ...} (o2sema.bas)
21:59 25/07/2014  Fix broken conditional string optimization (o2expr.bas o2expl.bas usx ) incl string functions.
15:38 20/07/2014  Fix dynamic compiler: all temp vars to be local (o2decl.bas: dep: tmpvar)
15:02 15/07/2014  Fix 'link' directive for dynamically compiled functions (o2sema.bas dep mk 1 mk 0)
10:00 09/07/2014  Dynamic compiling: pass full set of static symbols to dependent binary. (o2expr.bas: "compile" mesb mest)
20:01 01/07/2014  Support Exern preset. For classes with a preset Function Table Pointer
14:31 27/06/2014  Further redistribution of functions from o2pars.bas
13:05 26/06/2014  Split o2reco.bas from o2pars.bas - & redistribute some other o2pars.bas functions. & other files
15:47 23/06/2014  Fix function as parameter passing its returned value byref (o2expr.bas above dparams:)
00:27 19/06/2014  Fix Terminate (prevent free temp strings 2144 o2runt.bas 2144)
09:34 16/06/2014  Fix superquotes "quote" embedded in other words (o2lexi: captend quotex)
23:53 05/06/2014  Fix superquotes - ignore comment marks ascii 39 (o2lexi: captend quotex)
22:52 05/06/2014  support 'case' followed by line break (o2sema.bas:solvec) 
18:05 02/06/2014  Fix byte array indexing with expressions: b[i+j] (o2expr.bas dimix)
18:59 31/05/2014  Fix alternative select cases (wrongle placed exit_sel label o2tran.bas)
14:25 31/05/2014  Fix string literal single word returns
00:02 30/05/2014  Refactor end blocks: endif enddo etc. (o2tran.bas o2glob.bas)
15:12 29/05/2014  Fix Cast(Typeof(v)).  (o2pars.bas : pword "cast")
08:42 29/05/2014  New (internal) procedure for terminating single liner "if" (o2tran.bas:sln)
07:37 29/05/2014  Trap unclosed quotes
07:36 29/05/2014  Add "end" to expression terminators
23:46 28/05/2014  Change rule on fpu preference (division) : o2pars.bas:precedence: divi)
23:45 28/05/2014  Change if .. colon: must terminate with 'end if'
14:47 28/05/2014  Support "at" expressions, brackets now optional: byte b at (strptr s)
14:13 28/05/2014  Refactor o2link.bas 'check for values first / case block
06:19 27/05/2014  Case ranges, use of '<': case 0.1 to < 0.2 (o2tran.bas:'CASE)
22:10 26/05/2014  Fix bit Enumeration starting at 1: enum bit items aa,bb,cc,dd ... : 1 2 4 8 ... (o2decl.bas)
15:50 26/05/2014  Fix const evaluation for arrays (o2meta.bas)
10:55 26/05/2014  case: alternative range tests case "A" to "Z", "a" to "z" : isalpaha=1 (o2tran.bas o2lexi.bas nextinstructla)
07:35 26/05/2014  Refactor constants: fixes string constants and autotype conversion (o2decl.bas o2meta.bas)
22:34 25/05/2014  Switch fixes. Switch 'default'
22:33 25/05/2014  Extend cases to support neg variables etc
00:43 25/05/2014  Fix identification of string members in a function. (o2pars.bas: pword isstr)
19:31 24/05/2014  Create error traps for bad cases (o2meta.bas: invalid unknown)
19:31 24/05/2014  Refactor case/switch section (o2tran.bas  o2sema.bas SolveCase)
13:07 24/05/2014  Support case alternatives: case 9,10,13,32 : ... (o2tran.bas: _is_cas)
07:24 24/05/2014  Optimise string bstring returns: (o2tran.bas o2expl.bas o2sema.bas _retval)
22:33 23/05/2014  Issue with optimised bstring return : (o2tran.bas:) comment out
14:21 23/05/2014  Fix autoconversion problem with subtraction operator (o2expr.bas: if ..trgn no precedence)
09:59 23/05/2014  MemoryPool.inc adjustments: Allow RTL call vector substitution
14:00 21/05/2014  Macros word substitutions now include dot. (use ## to combine): v##.x
13:30 21/05/2014  Fix global GC list for members receiving strings in local environment
23:27 20/05/2014  Fix error trap: allow assigment to local bstring arrays.
23:26 20/05/2014  Fix local string arrays: adding to local GC list / not global GC
11:56 20/05/2014  Function return : return matching bstring directly (no concat)
09:58 20/05/2014  Ensure that GC-logging occurs before string operation.
09:54 20/05/2014  Trap calls to functions, that fail to assign the returned value. (excluding integer types)
22:17 18/05/2014  Fix Binaries that use Dynamic compiling. (Oxygen.dll entity records o2tran.bas o2expr.bas)
01:16 17/05/2014  Further optimisation of indexes including word and byte indexers
21:11 15/05/2014  Further fix void members interfering with other structures (o2decl.bas:types v sni)
13:18 15/05/2014  Support Arrays for jump tables. for goto, gosub, jmp, call : call t[token]
09:09 13/05/2014  Support void members (o2decl.bas types tv)
12:21 09/05/2014  ProjectsB JAPI Demos require sleep 100. After J_Frame
12:20 09/05/2014  ProjectsB ScriptBasic/DLLC fix dllcnsl (AllocConsole causing problems, when multithreading)
20:54 07/05/2014  Fix loop / loopne labels beginning A... o2assm,bas
16:51 07/05/2014  Change cpu / leaf call syntax: function f leaf (...)
08:16 07/05/2014  Fix 64 bit stack adjust comparators (o2expr.bas:"sp 8")
07:17 07/05/2014  Alter _mem for direct setting of ebx (eax register not used now)
07:17 07/05/2014  add _mem to RTL64 (lea rip rbx,bss_data : ret)
13:00 06/05/2014  Reinsert some macros (top of o2expr.bas)
12:53 06/05/2014  Improve treatment of negative vars a/-b (o2pars.bas:preced) (o2expr.bas oploop: remove negative)
07:56 06/05/2014  Improve treatment positive and nagative infinities
07:37 06/05/2014  Support -0.0 (o2enco.bas: negative zero)
06:35 06/05/2014  Fix integer division operation '\' : (o2enco.bas:xopd)
06:13 06/05/2014  Adjust FPU preference rules (float division o2pars.bas:preced divi=)
11:18 05/05/2014  New Lazy Evaluation system (o2expr.bas:wtn :lazy) (o2expl.bas:lazy)
10:59 05/05/2014  Fix len param optimisation (no cat) (o2expl:a=asc(wg) now b)
08:52 03/05/2014  Indexbase now readable as constant: a=indexbase (o2pars.bas:"indexbase")
08:21 03/05/2014  Additional attribute keywords: countof, bytesof  (o2pars.bas:countof) (o2keyw.bas...)
08:20 03/05/2014  Support 'of' as separate word: type of a == typeof a  (o2pars.bas:"of")
00:26 03/05/2014  Support macro mebers for both macro and def (o2pars.bas:macromembers) (o2lexi.bas: instrword() dic() )
14:40 01/05/2014  Allow Class statics to be accessed directly (o2tran.bas: varf=2 mc=-3)
23:17 26/04/2014  Fix memory leak (temp strings), when returning asc/val string expression. (Aurel)
12:14 25/04/2014  Check nesting before optimising comparisons. (o2expr.o2bas:1808 nst=0) (Aurel)
14:36 24/04/2014  Error reporting file and line number in Abstract assembler
12:11 24/04/2014  Improve cast syntax cast .. or cast(..) or (..)
10:21 24/04/2014  Simplify macro recording: (o2meta.bas:metaco 109)
10:19 24/04/2014  Cleanup float macros (o2enco.bas:ins)
10:18 24/04/2014  Remove caster 'as' (o2pars.bas:pword)
13:44 23/04/2014  Fix sub-array offsets (o2pars.bas:isdtf) eg: a.b[c]
08:42 23/04/2014  Fix large member offsets (o2pars.bas:readvals) (o2runt.bas:ascii_to_float prototype)
12:18 22/04/2014  Macro members / experimental (o2pars.bas:himac)
04:19 21/04/2014  Fix default params of pointered type: f(char* s="abc")
09:00 20/04/2014  Fix number suffix for hex and oct: 100h 400o
07:42 15/04/2014  Fix left side number comparisons (incl negative numbers)
18:00 09/04/2014  Optimisation of conditionals - incl string expressions
08:42 30/03/2014  Enable use of ':' instead of 'then' (fix for no param function calls)
07:51 28/03/2014  Enable direct r/w to class statics (o2pars:matchm varf=-2/-4)
11:52 23/03/2014  Fix #show for procedures (o2tran.bas: bj)
20:00 21/03/2014  ImgWin OpenGlSnapshot: Shift key *Ctrl P) to make uniform backgrounds transparent (png file)
20:00 21-03/2014  Oxide drag&Drop to Edit or Execute prog scripts
10:01 19/03/2014  Fix lib / library path $/lib/..  (o2tran.bas:rootpath...)
11:40 27/02/2014  Fix C comment stripping from #defines (o2lexi:noccomments  o2meta:noccomments)
12:11 26/02/2014  Fix *pointer tyoes - casting syntax interference  (o2Pars:3020:3039 'ascw=lbr')
14:46 20/02/2014  Removal of early macro param expansion (o2pars:macres:1863)
13:44 20/02/2014  Fix case sensivitity params in macros (o2lexi:clcasewds o2meta:metaco)
18:20 19/02/2014  Fix 'Deg' macro
02:06 16/02/2014  Change to #show mechanism (o2tran:#show o2glob:she o2lexi:isw case &h7f to &hf0)
08:26 14/02/2014  Make alignment rules for structures C-compliant: (o2pars:roundupC o2decl:mps:roundupc rework)
16:04 12/02/2014  Support C style multidimensional dim [][].. (o2sema:1977 o2decl:353)
17:44 11/02/2014  Fix #case capital, for words containing underscore (o2lexi:339 case 95)
15:55 11/02/2014  Allow C style 'static' disregard outside procedures (o2tran:1113:case 6)
12:07 11/02/2014  Fix multiassign stuctures inheriting types (with type headings) (o2pars:varf:1090)
13:35 08/02/2014  Fix auto-byref for indexed indirect variables etc: (o2expl:quicknoproto4,quicknoproto8 merge expr:2471) 
06:17 08/02/2014  Fix indexed multiassign: (o2expl:pushaddres:996) 'itr member subarrays
21:10 07/02/2014  Fix inherited indirect types assign to object body. (o2decl:makeheaders:2013 a=0)
16:17 05/02/2014  LET (o2enco:InitStackspace replace qeax with 0) to preserve eax content for local string.
07:29 05/02/2014  LET (o2pars:returntype/typu two calls)
22:58 04/02/2014  LET string exclusions / (rerwrite o2sema:createvarfromexpression)
22:30 02/02/2014  LET Syntax arrays let a=vector,n (o2sema:212.. o2sem:1036:'AS'... )
16:09 02/02/2014  LET Syntax arrays (o2glob:typu o2pars:735:1032:2930 3694 strip old nest()& unnest() )
15:14 31/01/2014  Fix postinc/postdec in arrays: a[i++]=42 (o2expr:pid)
14:00 31/01/2014  Fix preinc/predec in arrays:  a[++i]=42 (o2expr:preincdec)
10:00 31/01/2014  Fix z[] as zstring="ABC" : (o2sema:1859..)
08:47 31/01/2014  Support MultiAssign inner {..} (o2expr:372..:1768..)
03:16 31/01/2014  Redundant global (o2glob remove asgp)
19:25 29/01/2014  Support Multi-Let : (Compiler splits into simple Let statements) (o2Sema:159) Let a,b,c=4
14:14 28/01/2014  Support auto array count: sys a={1,2,3,4} (optional []) (o2glob:elct o2 lex:capture o2sema:1923..2004)
10:22 27/01/2014  Support negative indexbases (o2 tran.bas 2037)
19:42 25/01/2014  Fix nested assignments before and after brackets. (o2 expr.bas ~1600..)
19:42 25/01/2014  Fix embedded assignments for strings (jn=1 for cat buffer)
11:42 23/01/2014  Autoconversion of types after embedded assignments: a=4+(b=b+1.0). (o2expr.bas~1600..)
17:33 21/01/2014  Fix 'at' after 'as':  dim x as single at #px : (internal o2sema.bas 1808.. reprocess)
17:06 20/01/2014  Fix float fraction iteration (internal asxp flag in bas files sema/expr/glob)
17:02 06/01/2014  Fix indirection calc *(p+4). (internal ncastex)

08:33 25/12/2013  Fix #dim default (no param)
08:31 25/12/2013  Fix autoconvert string + numeric function
07:02 25/12/2013  Reintro support for anon declaration param like  int abc(int,char*,double)
15:43 24/12/2013  Fix Autodim dynamic strings garbage collection
15:45 24/12/2013  Fix string mem leak string expression params byref
06:04 23/12/2013  Trap direct string param modification
11:47 22/12/2013  Fix deg and rad macros (stack usage) for 64 bit code
11:14 13/12/2013  Fix thinBasic_Oxygen.dll: use bstrings for LoadSymbol / cure for string corrup
22:59 11/12/2013  Fix %% default equates
16:52 08/12/2013  Fix Lookahead and predeclaration types/variables confusion (C proto)
16:51 08/12/2013  Fix string-to-val temp string logging (potential memory leak)
10:48 07/12/2013  Fix val-to-string temp string logging (potential memory leak)
06:45 28/11/2013  Fix compound type indexing. (SIB encoding allow) (bit shift error)
03:16 07/11/2013  Fix indexing from absolute addresses (thinBasic shared vars)
23:34 21/10/2013  Fix boolean comparisons equality:  a=(b==c)
19:31 21/10/2013  Fix filename in error reporting
19:07 21/10/2013  Fix embedded nuls in soure code: replace with spaces
18:46 21/10/2013  New hash coder non-asm (internal)
12:05 21/10/2013  Fix gosub 64bit apps maintain 16 byte stack alignment.
05:12 20/10/2013  Refactor 'let' syntax. now supporting 'copyof'
05:47 19/10/2013  Support equate numeric expressions for CASE
22:58 18/10/2013  Fix meta compile-time equate numeric expression (summing negative numbers)
10:28 17/10/2013  Support direct pointer assignment in dim: sys*a=getmenory 1000
17:19 16/10/2013  Support C style casting a=(double*) d  etc.
10:14 16/10/2013  #preprocess command
21:01 15/10/2013  Fix #compact method forward calls (detection in proclist)
11:54 14/10/2013  Separate keywords o2keyw.bas and manual data o2keyw.dat
17:02 09/10/2013  Fix operator-based line continuation for '&'
12:22 09/10/2013  Fix arith precedence in macro expressions
05:48 08/10/2013  Fix multiassign one value for floats: a=b=c=3.5
23:15 07/10/2013  inc/dynamic array macros
13:46 07/10/2013  Fix CrLf line endings (C linux header problems)
12:12 07/10/2013  Fix #compact again!
13:30 05/10/2013  Revoke embedded type definitions: dim vector{single x,y,z} a,b,c
12:54 05/10/2013  Implement preprocessor
05:22 05/10/2013  Revoke nestable #case, now plain switch.
21:22 04/10/2013  Fix TypeDef Procedures
14:55 04/10/2013  Fix types from typedef bug (internal o2sema L54)
15:27 18/09/2013  Updated thinBasic_Oxygen & Oxygen zips
12:07 18/09/2013  Resource compiling notes: /tools/compilers/ResourceNotes.txt
10:44 18/09/2013  Fix #compact problem with methods calling fwd methods
21:54 17/09/2013  #show displays both intermediate code and asm 
00:26 15/09/2013  Fix 64 bit instrinsic low-level calls (copy0 etc.)) calling convention
23:10 14/09/2013  Fix RTL64 str() (float_to_ascii) decimal places setting
11:40 13/09/2013  Fixed unprototyped calls can now pass params explicitly 'byval'
10:28 13/09/2013  Allow small types to be returned direct from a procedure (eg: rgba, shortvec)
13:19 11/09/2013  Fix mixed string and float-macro-expression autoconversions.
00:49 11/09/2013  Fix optional params in class indirect methods (internal namedparams)
02:27 10/09/2013  Fix asciiz2 type recognition. (same as wchar / zstring2)
08:49 01/09/2013  Fix 64 bit compile float param flag clearing (typl() internal )
11:47 31/08/2013  Allow multiple prefix code blocks terminated with chr(12) (excludes line nubering etc)
23:42 16/08/2013  Move manual to /inf folder (For Scite context help )
05:42 01/08/2013  Enable include files to have rootpath '$' prefix:  "$\inc\rtl32.inc"
21:28 31/07/2013  Fix includepath "$" when in root directory
04:17 30/07/2013  Add Menus to MinWin.inc
04:39 29/07/2013  Include console.inc for console-based applications
20:26 28/07/2013  Fix issue with optional params call with no brackets
11:59 24/07/2013  Internal: changes to memregadj (supports multiinstruc, cr etc)
16:00 22/07/2013  Fix 'optional' with PB style function declarations
15:27 20/07/2013  Fix problem with function left double bracket: str((t2-t1/fr),6)
18:42 12/07/2013  Fix Autodim 'off' for iterators
08:27 12/07/2013  Allow MultiAssign closing bracket to be on separate line.
13:23 11/07/2013  Extend support merging optional params and default params.
12:17 11/07/2013  Fix mixed number / string expression, starting with number: s = 42 s1
06:26 09/07/2013  Allow autotyped expression line break after '='
12:39 27/06/2013  Fix class factory : direct class method call without instantiating
09:30 25/06/2013  Fix 'Version' string
17:42 21/06/2013  new <<< rol >>> ror integer rotation operators
22:03 18/06/2013  Fix 'not' without (): a=not 64
21:27 08/06/2013  Remove from reserved list: db dw dd dq mov lea add sub mul div jz jnz shl sal sar
17:23 30/05/2013  Fix linefeed (linux lines) problem (SB src strings)
13:34 28/05/2013  Fix LibraryPath (SB embed LibScriba.dll)
05:41 28/05/2013  Move all SB extension DLLs to /SB/modules
23:49 27/05/2013  Fix a[].b[] subarrays offset (DLLC SB)
18:19 25/05/2013  Endline checks for chr 10 (linux text)
18:16 25/05/2013  Support extern declarations (japi.h)
18:17 25/05/2013  Support declaration prototypes without param names (japi.h)
10:06 13/05/2013  Support dword comparisons (< <= > >=) (Opengl picking)
11:42 12/05/2013  Refactor OOP to support indexed inherited classes (and udts)
22:52 29/04/2013  Fix quote-underscore line continuation (thinbasic TBGL headers)
01:24 29/04/2013  Revoke Operator methods
01:24 29/04/2013  Revoke Operator definition instruction
13:22 25/04/2013  Fix 'convert' directive (double to float for all ops)
08:37 25/04/2013  Fix float variable params for unprototyped procedures
03:19 25/04/2013  Fix #compact for classes in projectsa/controls. (prevent double ref /proclist)
19:53 19/04/2013  Autoset optional flag when default params are specified: function f(sys a=4,b ...)
21:08 17/04/2013  Fix $ problem (adjust ascn / prototypes) (Aurel)
21:29 16/04/2013  Fix Linemark end of src bugs (Aurel)
07:08 14/04/2013  Fix DLL termination on error / DLL unloaded /
07:09 14/04/2013  Fix DLL binding error disruption.
22:26 12/04/2013  Place embedfile pointer variable first: embedfile p,"t.txt",3,2
19:14 12/04/2013  Support embedfile optional offset (incl -ve from end) and length params
22:03 11/04/2013  Asm added conditional jmp cmov and set: jnge jnl jng jnle jnae jnc jnb jna jnbe jno jns jnc jne
20:17 11/04/2013  Fix unprototyped automatic passing of compund vars byref (fix for direct vars)
09:50 11/04/2013  Fix let with methods
14:23 09/04/2013  Let assignemts: let a=byref b : let a=local b : let a= new b 'default temp
18:18 08/04/2013  Fix #compact for methods (patch list position out of sync)
12:57 08/04/2013  Fix macro resolving metatype (clear mc, returning operators / pre-inc ++va)
16:35 07/04/2013  Fix width (cpuw) of indirect types
01:10 07/04/2013  Fix Asm jmp long / jmp short (dollowing callback relays adjustments)
11:30 05/04/2013  Fix inherited types with array members
19:59 04/04/2013  Fix inferred type, default params.
16:29 04/04/2013  OxConsole
16:28 04/04/2013  New exo2 and gxo2 compilers with -i option.
04:40 04/04/2013  Support single operand 'addr', uses eax register by default.
10:23 03/04/2013  Fix relative jmp to a function (callback relays)
11:51 01/04/2013  Fix corruption of '!' record: (initialisation)
11:50 01/04/2013  Fix string GC for char*
05:42 31/03/2013  Objects with garbage collection: let obj=local/static xyz
13:21 27/03/2013  Remove old 'bind' code from MinWin
13:15 27/03/2013  Support path symbol '$': includepath "$/inc/" : librarypath "$/lib/"
08:25 24/03/2013  Fix 64bit incomplete dim init variables to null (long lists)
08:22 24/03/2013  Fix 64bit floating point val (from text) issue
20:25 23/03/2013  Fix 64bit internal method calling convention
12:29 22/03/2013  Fix addr for strings / byref params / simple arrays / members
11:01 22/03/2013  Fix ### ### (multipass compiling) (Emil)
07:38 22/03/2013  Param[] for direct generic access to function params
06:41 22/03/2013  support ... in main code (ellipsis line non-execurable)
06:14 22/03/2013  itr thinBasic problem with string constants in app dataspace (quoted)
06:13 22/03/2013  Internal Set lcl() flag whenever lcls is() set
01:27 21/03/2013  New GetVarptr for thinBasic_Oxygen / Oxygen shell split
00:48 21/03/2013  Fix new 'extern' resets previous extern settings incl library name (auto end extern)
19:19 20/03/2013  Fix 'addr' pseudo-instruction for bstrings and strings
12:44 20/03/2013  Convert void* return type to 'sys'
12:42 20/03/2013  Various typedef function fixes (ScriptBasic Bes Header)
19:36 19/03/2013  Support void** typedef members
19:35 19/03/2013  Fix typdef members unsigned long etc
10:56 17/03/2013  Allow calling convention overrides : cdecl method ... cdecl int f()
10:56 17/03/2013  Allow unprototype methods (Emil)
10:54 17/03/2013  Allow macros inside typedefs (Emil)

02:37 15/03/2013  Fix RTL32 and RTL64: suppress del temp strings on terminating dll
13:59 14/03/2013  Fix crash comments following a macro call containing word 'macro
06:47 13/03/2013  Support name demangling ! alias _Xyz_Some@12  becomes xyz_some
17:33 10/03/2013  Set Default compile mode to Basic (o2h=1)
05:05 09/03/2013  Fix MultiInherit (table section offsets)
23:30 08/03/2013  Fix static member array resolution (mword)
21:18 08/03/2013  Fix ellipsis cdecl for methods.
22:58 06/03/2013  Fix pvt offset
13:45 06/03/2013  Revoke 'inherits': use 'from' or 'of' instead
13:36 06/03/2013  Fix 'that.' notation (symbol is external to class): that.redim
13:28 06/03/2013  Revoke method format type_before_name: method long xyz()
14:15 05/03/2013  Enumerations now C compatible. (members become equates)
16:17 04/03/2013  Fix inner functions breakage (inhibo array)
03:21 02/03/2013  Fix address of array element: @a[101] @a[i] @a[i+j]
21:35 01/03/2013  Improve alignment rules for inherited typedefs (itr unions)
13:04 01/03/2013  Support for enumeration members in typedefs
09:48 28/02/2013  Oxygen API removals: O2_view_file, o2_asmo_file, o2_assemble_file
10:05 27/02/2013  Support Cdecl in low level bind and unprototyped declarations
18:40 26/02/2013  Fix sensiticivity to tabs in macros (tabs suppressing cr insertion)
11:58 25/02/2013  Fix variables with leading underscore
03:17 23/02/2013  Extend support for macro blocks with round brackets
01:16 23/02/2013  Fix compund indexing (member indexing) direct offsets / SIB / Full calc
23:29 20/02/2013  Fix Coff header section directory: patch in export & resource section lengths
13:25 15/02/2013  Fix #compact mode for DLLs (tracking calls from exported functions)
14:06 11/02/2013  Revised SortMerge for StringUtil (case insens) (64 bit compatible, no asm)
11:16 11/02/2013  Support sizeof / typeof etc in metastatements
18:07 09/02/2013  Control generics
18:07 09/02/2013  EditBox caret to fall left or right of caracter (using halfchar placement)
21:04 06/02/2013  EditBox Light/Dark palettes
03:50 04/02/2013  EditBox support Edit switches and keyword lists
03:50 04/02/2013  Support '!' declarations inside a class
05:45 03/02/2013  Viewer Block cut/copy/paste
18:47 31/01/2013  Viewer Syntax highlighting logistics in /projectsa/openglview/viewer
22:49 28/01/2013  Tweak any to support direct: function f(any x) ...
11:51 28/01/2013  Void* treated as sys: exception to normal indirection rules.
00:52 27/01/2013  Fix mixed type iteration: for int=float to float ...
22:56 26/01/2013  Fix post assign: dim tab as string=chr(9)
22:03 26/01/2013  Fix inc a else .. (thinBasic Read)
21:30 26/01/2013  Fix Comma+underscore line continuation in declaration (thinBasic headers)
20:15 26/01/2013  Fix indirect string array with calculated index
20:15 26/01/2013  Fix inner macro problem (constructs examples)
12:06 26/01/2013  Fix multiassign function addresses (constructs examples)
22:30 25/01/2013  Fix Declaration redefinition problem
10:52 25/01/2013  Change version encoding to include time / date stamp
10:47 25/01/2013  Implement float select for float range cases: case 0.1 to 0.2 ..
14:00 24/01/2013  Fix embedded oxygen compiling (o2h) (pb). linker strptr corruption
05:38 24/01/2013  Adjust reserved (bss) static space for dynamic compile (4k per invoke)
17:52 21/01/2013  o2_abst emits abstract assembly code
18:46 19/01/2013  Oxide workover: reverse search / add to help panel
08:29 19/01/2013  Adjust linemark() function - exclude marking inside strings
21:43 16/01/2013  Lazy declaration parsing / much faster for large headers
10:33 14/01/2013  Fix support for void pointer parameters
13:47 12/01/2013  Convert operand offsets to hex: [ebx+0x1000]
10:58 12/01/2013  Removal of 'com' attribute for methods and functions.
10:58 12/01/2013  #compact 3 pass. (also removes statics)
09:29 09/01/2013  #compact dead code removal for all unused suns, functions and methods
09:28 09/01/2013  Extend Addr pseudo-intruction to support labels and string literals
15:47 26/12/2012  Asm pseudo-instruction addr. Resolves variable addresses: addr ecx,a
22:11 25/12/2012  Fix mixed type for .. to 
03:13 25/12/2012  Fix asm lods lodsb etc
22:41 24/12/2012  Fix byte / word multiassigns
02:34 24/12/2012  Upgrade compiler to FreeBasic 0.24
02:50 20/12/2012  Refactor asm REX coding (with 16 bit prefix 66 etc)
10:00 19/12/2012  Fix pointer to zstring member of indirect udt (Theo demo1)
09:42 19/12/2012  Fix use of '&' for string appends
22:17 18/12/2012  Support PB-style Asciiz definition dim z as asciiz*128
22:16 18/12/2012  support refinition of block names (including end ...)
04:32 17/12/2012  Support push word 0x1234 '16bit immed push
12:34 14/12/2012  Function return types: char returns as byte, wchar as word (direct char)
12:33 14/12/2012  Fix fixed length string in a byref UDT
12:33 14/12/2012  Fix tmpvar allocation
01:02 09/12/2012  Fix typedef struct abc_ abc
04:56 27/11/2012  16 bit imul: imul ax,42
03:46 27/11/2012  Asm support 2 operand imul with number: imul ecx,42
00:02 11/11/2012  Refactor Assignments (o2tran.bas)
21:23 08/11/2012  Fix #lookahead
20:01 05/11/2012  Fix line numbers
20:01 05/11/2012  Min Instruction layer pass is now operational
20:44 31/10/2012  Building instruction layer (o2expl.bas)
17:50 30/10/2012  Fix temp string log in RTL64, asstmp: (causing memory leaks)
23:15 22/10/2012  Abstract remaining asm from o2expr.bas to o2enco.bas (cmp & multiassign)
16:14 22/10/2012  Refactor address of array element (pword in o2pars.bas)
11:19 22/10/2012  Fix higher op 'not' (oper 11)
04:43 19/10/2012  Refactor o2assm.bas word loop (top end)
11:25 16/10/2012  Refactor operations following nested expression (remove commute function)
11:29 14/10/2012  Fix Asm loop instructions: loop loope loppne (8 bit rel jump)
04:54 14/10/2012  Implement 'end'. ends program execution
07:44 13/10/2012  Refactor declvars, varsal, vars
07:45 13/10/2012  Refactor isx ise iss, add isxn and nsxn functions
11:43 12/10/2012  Additional layer o2tran.bas above o2sema.bas
23:57 11/10/2012  Refactor autodim, assignments,cdims, dimvars (o2sema.bas)
19:32 11/10/2012  Refactor C declarations - o2sema.bas
17:46 10/10/2012  Refactor table selection / OOP (vtp)
12:05 10/10/2012  EnCase o2sema.bas for more efficient transit
21:14 09/10/2012  Fix arising OOP bugs eg: classlibrary, classtree
21:13 09/10/2012  Refactor procedure prolog
22:44 08/10/2012  Refactor control {} nesting (o2sema.bas)
22:44 08/10/2012  Refactor indexing and method calls (o2expr.bas-->o2enco.bas)
12:28 07/10/2012  Refactor operations in o2expr.bas (numoperations() in o2enco.bas)
01:21 07/10/2012  Refactor o2sema.bas, transferring encodings to o2enco.bas
00:17 06/10/2012  Refactor procedure epilog (transfer components to encoding layer)
00:57 29/09/2012  Fix chr(..) expressions (distinguish from multichar)
22:46 28/09/2012  Optimise 64 bit (CPU) param passing
14:35 28/09/2012  Optimise float comparisions
13:38 28/09/2012  Optimise simple operand comparisons
13:37 28/09/2012  Optimise integer number comparisons
07:37 28/09/2012  Use SIB coding to optimise Arrays
06:58 28/09/2012  Support direct assign numbers for bytes,words,shorts
11:02 22/09/2012  Refactor array encoding for compound arrays: a[1].x[2] 
22:55 21/09/2012  Fix (imgwin snapshot) 64 bit string params (ref alterations)
20:31 21/09/2012  Refactor Array encoding: direct offsets etc
10:08 21/09/2012  Optimise asm: push number params directly 
09:03 21/09/2012  Trap unidentified operands early (in expressions())
12:53 20/09/2012  OpenglView - fixed snapshots (using glReadPixels)
07:42 19/09/2012  Refactor vectored functions (-7) (newvector))
21:35 18/09/2012  Declare support non-prototyped procedures: omit brackets: ! GetStockObject lib "GDI32"
15:56 18/09/2012  Bind enhanced: Allow declarations without alias.
14:31 14/09/2012  Includepath '-' option :  Includepath - "glo2/"
15:48 13/09/2012  Refactor Identopeq(), Attributes(), Macres()
13:50 12/09/2012  Refactor Precedence function
15:55 09/09/2012  Refactor single word conditiones (onewordcon etc)
13:39 07/09/2012  Refactor isa() isfloat() function sets (o2lexi.bas o2pars.bas)
07:36 07/09/2012  Refactor PE file generator
09:51 06/09/2012  Refactor Asm output (o2hdrs.bas)
09:50 06/09/2012  C Emit pointer translarion: * -> [].
05:13 31/08/2012  C Emit functions, expressions, conditionals
14:09 30/08/2012  Add #emit {..} for emitting source code directly.
04:29 29/08/2012  Support declare *fun() : @fun=wglGetProcAddress "glCreateShader"
22:26 15/08/2012  Fix temp string memory leak. (occured when no local strings (dts flag))
06:17 12/08/2012  Oxide update: shift / ctrl F5 compiling binaries
14:27 11/08/2012  Fix C-style switch/select {..}
13:45 11/08/2012  Fix C-style For (..) .Support brackets.
19:24 10/08/2012  Fix single lin inheritance for non-virtual classes (internal sih vtp)
09:33 06/08/2012  Fix post ++/-- for arrays
02:48 05/08/2012  Fix quad arithmetic with literal numbers
14:15 04/08/2012  Prevent macro expansion in Precedenter. (implicit THIS conflict)
04:41 02/08/2012  Fix host '#' variable translation: (thinbasic mov eax,#ball)
03:41 02/08/2012  Fix 'Recordof' truncation on large structures (controls/DlgCtrl)
19:53 31/07/2012  Fix Class MultiElement statements: slider s1,s2,s3 ...
22:47 30/07/2012  Refactor procedure prolog ('this' in internal procedures)
20:37 25/07/2012  Refactor OOP operators (OperHi)
09:23 13/07/2012  Changes to PackOxygenBasic (copy batch files)(del t.o2bas .cfg etc)
15:17 12/07/2012  Start C output: #file "filename.c"
09:59 12/07/2012  Trap macro param errors (too many/too few params)
01:11 12/07/2012  Support full ellipsis: method(...)
13:49 11/07/2012  String review - supporting string params for unprototyped procedures (remove deltems call)
16:02 10/07/2012  Support === and --- as non-executable underlines
02:38 10/07/2012  Full cleardown following 'Return' expression
01:54 10/07/2012  Prevent divi flag carry-over: causes problem with subsequent unprototyped calls.
11:25 09/07/2012  Calls without prototypes: support for dynamic strings and char buffers
14:20 08/07/2012  Minimalist IDE Oxide
15:07 03/07/2012  Extend Quote to support brackets : print quote(print quote(hello world!))


(ascending date)

Alpha039

05:15 26/12/2011  Extend qualifier tags for C-style prototypes
16:57 05/01/2012  64 bit internal floats return on FPU stack
16:58 05/01/2012  64 bit trap attempt to pass extended floats byval
19:26 06/01/2012  % $ defines restricted to single line (supports null definitions)
10:34 17/01/2012  Fix str(). sets dl register to 1 for ansi string
16:25 24/01/2012  revise examples/oop/operators/vectors
12:46 27/01/2012  Fix operators for vector arrays and other objects in array
17:20 27/01/2012  Fix multiAssign to an object (skipping static members)
21:19 27/01/2012  Update
16:38 29/01/2012  Fix str val x problem. Val returns fpu type treated as extended.
04:58 30/01/2012  Fix 64bit rnd() problem: returning float in fpu (non external funcs.)
05:01 30/01/2012  Update
17:53 30/01/2012  Error traps for dim v at p ...checking p is a sys variable
10:59 01/02/2012  Fix function bool conditional : if c.f then ...
15:50 01/02/2012  Update
09:51 03/02/2012  Fix classes defined inside macros
11:52 03/02/2012  Fix classes declared inside functions (for multithreading)
21:06 03/02/2012  Update
06:13 04/02/2012  Introduce #dim for default variable type
19:46 09/02/2012  Extend OOP operators functionality "not" "neg" "import" "export"
19:48 09/02/2012  Start Varitype OOP operands
17:11 12/02/2012  Update
17:11 13/02/2012  Fix RTL32 Sysalloc..
17:11 13/02/2012  Sync GDIWindow (Peter) examples
09:54 14/02/2012  fix macros like: def X [ebx+4096]
22:28 23/02/2012  Update
09:14 13/03/2012  Fix typedef struct (anon) dimmed variables in classes
14:08 13/03/2012  Fix long / short / signed / unsigned dim anomalies and error trapping
21:36 13/03/2012  sound/ wave audio synth demo
21:37 13/03/2012  Update
23:47 14/03/2012  Fix compact type with mixed inherited types type vv (vector v,w, pixel p ..)
12:18 15/03/2012  Fix conflation of typedef and type in grouped/inherited elements
19:07 15/03/2012  Refactor _return recognition: fixes @function=@c etc
19:43 15/03/2012  Update
07:06 17/03/2012  Fix inner "struct" that contains single member only: struct wavehdr_tag * lpNext; 
07:11 17/03/2012  Update
12:56 17/03/2012  Suppress error trap "unclassified word" (asm mode)
17:06 17/03/2012  Introduce sleep into window.inc Pause and WaitKey (also introduce GetFocus)
18:52 17/03/2012  Update projects/GDIWindow/ prog loops
18:53 17/03/2012  Update
22:10 18/03/2012  Update (class factory)
00:51 20/03/2012  Sound wave examples
00:52 20/03/2012  Update
08:36 26/03/2012  sgn() support
09:33 26/03/2012  Fix zstring char width passing to built-in (-16) functions
09:40 26/03/2012  Correct manual 'related' links: 'remain' to 'mod'
09:40 26/03/2012  Update / manual update: sgn()
10:02 26/03/2012  MinWin: SetLastError
12:14 27/03/2012  Fix 64 bit float param int to float conversions -> use simd registers (exports)
18:06 27/03/2012  Fix 64 bit internal calling convention returning floats on fpu, not simd
18:24 27/03/2012  Update
10:26 29/03/2012  Fix 'switch' bug (restoring test value)
10:27 29/03/2012  Introduce 'select bit' and 'switch bit' for bit cases 1 2 4 8 ..
03:14 31/03/2012  Accept enumeration params in functions.
03:15 31/03/2012  Support enumeration constants const fruit fr=apple or pear
03:33 02/04/2012  Revoke 'defs'
03:34 02/04/2012  Fix Line numbers with colons 10: 20: etc
04:05 02/04/2012  Refactor dot labels / colon labels / point line numbers
04:26 02/04/2012  Trap isolated dot
04:27 02/04/2012  Update
08:23 04/04/2012  Fix array-of-objects procedures: objX[n].procY[v]
08:27 04/04/2012  projects/GDIWindow: control examples + jpeg/png loading
08:27 04/04/2012  Update
15:03 05/04/2012  Fix enum / also simplify
08:31 06/04/2012  Trap unsupported operators for var types: float a,b : a=b>>2
08:33 06/04/2012  Fix zero decimal places - prevent stripping off zeros at end : str(100,0)
09:32 06/04/2012  Update
11:52 08/04/2012  Fix broken autoconversion assignment (literal numbers).
11:53 08/04/2012  Update
14:08 11/04/2012  Fix typedef enum params
14:09 11/04/2012  GDIplus micro-header tests
14:09 11/04/2012  Update
21:01 12/04/2012  Extend C header comprehension: (CommDlg.h):
20:59 12/04/2012  Support for macros inside typedefs
21:00 12/04/2012  Support for typedef procedures inside typedefs including signature
06:26 13/04/2012  Support for empty structures and undefined typedefs
21:00 13/04/2012  Revoke class tags (external virtual etc)
21:02 13/04/2012  Revoke specialised class library system : new Class library example
00:37 14/04/2012  Update
08:41 14/04/2012  Update (fix internal struct ptrs)
22:20 16/04/2012  Fix operator precedence inside square brackets
22:32 16/04/2012  Update
13:44 18/04/2012  Partial fix: assign to char* variables. But not char* arrays
13:46 18/04/2012  Correct RTL64 param removing square brackets [sn] (affecting precedence routine)
13:47 18/04/2012  Update
22:06 18/04/2012  Support "null" assignment:  ofn.lpstrFileTitle=null
02:37 19/04/2012  Fix COM voice demos 64 bit compiled extern: inheritance issue.
19:32 19/04/2012  Fix 64bit printing floats and sys (autoconversion)
19:36 19/04/2012  Itr 64 bit multiple prints outside a function (corruption of PE file)
23:40 20/04/2012  Support for direct array of pointers
23:54 20/04/2012  Update
14:14 21/04/2012  Support for indirect array=pointers including zstring ptrs
00:01 22/04/2012  Fix Asm operand @ expressions
00:05 22/04/2012  Update
08:44 22/04/2012  Optimise zstring ptr assignment/coupling
14:22 22/04/2012  Implement strptr() - valid for zstrings bstrings and strings
16:06 22/04/2012  Support array operands with attributes
07:02 23/04/2012  Refactor array resolution (mword() internal)
13:15 23/04/2012  Decode registers as variables (parse -10 internal )
14:39 23/04/2012  In-progress update
23:28 23/04/2012  Update: Fix low level call - use of strptr and other attributes
10:44 24/04/2012  Array index optimisation
13:04 24/04/2012  Remove mq (internal)
23:43 24/04/2012  Fix casting 'as' but revoke the <..> form: print as zstring *pz
04:19 26/04/2012  Refactor const
04:20 26/04/2012  Implement consolidation of short string consts (internal) (8 bytes or less)
13:16 26/04/2012  Support extension of macros: eg: _epilog
13:23 26/04/2012  Update
18:33 26/04/2012  Support int a[5]={1,2,3,4,5}. Variation of int a[5]<={1,2,3,4,5}
19:21 26/04/2012  Update: Inhibit String literal consolidation: eg: case "x"
04:51 27/04/2012  Extend Support conditional assignment := in dims and single line if..
06:05 27/04/2012  #assign directive for C style use of '=' operator. ('==' for equlaity test)
14:09 27/04/2012  Update
01:17 29/04/2012  Fix array indexing. When using floating point index expression
02:30 29/04/2012  Update
18:27 29/04/2012  Update: Strip out C-style comments in % equates and defs
05:46 30/04/2012  Fix multipiple dim x at a, y at b ... (thinBasic PSVA10)
06:20 30/04/2012  Fix [#v] link varnames (thinBasic FractalMand)
19:50 30/04/2012  Find&Replace examples/GUI
19:50 30/04/2012  Update
10:07 01/05/2012  Precedenter terminataion on '} 'avoid corrupting end of functions
10:09 01/05/2012  Fix bind x(..): prevent interpretation as array
10:10 01/05/2012  Update
21:01 01/05/2012  Update: Revoke string literal consolidation
09:34 02/05/2012  Update: Support use of 'null' in all function call parameters.
19:19 02/05/2012  Refactor For..Next
00:41 03/05/2012  Refactor combi: Dim point{float x,y} a,b,c ..
03:33 03/05/2012  Fix Asm bug affecting xchg and test instructions
03:34 03/05/2012  Fix problem affecting accumulator with byte / word operand range overflows
08:34 03/05/2012  Internal Remove (op 3 string compare) (op cpu *= /=)
13:17 03/05/2012  Update
19:41 04/05/2012  Fix/refactor autoconversion, supporting arrays
22:09 04/05/2012  Fix byte-to-sys param conversions with class members
22:14 04/05/2012  Update
10:47 08/05/2012  Fix method calls with arrays of objects
05:03 09/05/2012  Fix indirect class linkage for overloaded methods
05:03 09/05/2012  Update
07:47 09/05/2012  Fix C style Do{..} while ..
14:10 09/05/2012  Fix strptr arithmetic: i+strptr(s)
19:37 09/05/2012  Fix nul string param check with class member strings
20:29 09/05/2012  Update
04:14 10/05/2012  Fix access to indexed inherited members (Jumpandrun)
04:15 10/05/2012  Fix detection of implicit 'this' with indexed inherited members
04:26 10/05/2012  Update
10:31 10/05/2012  Fix array of inherited members: (array is never applied to static part)
12:45 10/05/2012  Update
04:57 11/05/2012  Compact signature endcoding (internal ##sys#string@01.)
10:00 11/05/2012  Refactor named params
14:28 12/05/2012  EmbedFile (binary): sys b : embedfile "t.txt",b
09:50 13/05/2012  Pseudo Arrays - improved prototype matching
11:32 13/05/2012  Refactor typeof, typecodeof, sizeof
12:41 13/05/2012  'Convert' for explicitly converting params: call b (convert double 42)
12:53 13/05/2012  Support 'Cast', alternative to 'as': s= cast bstring b
22:47 13/05/2012  Fix comment stripper false Ccomment "/"
22:47 13/05/2012  Update
12:11 14/05/2012  Update: Fix case sensitivity in macro params
00:35 15/05/2012  Improve precedenter evaluation: *a+1
01:47 15/05/2012  Support pointer expressions: *(strptr s -4)
03:07 15/05/2012  Fix c style: for (i=1;i<e;i++) ..
03:45 15/05/2012  Fix C style if (a==b) c++;
19:03 15/05/2012  Further SB module interface: /projects/ScriptBasic/mdlt
19:04 15/05/2012  Update
04:55 18/05/2012  Update: projects/ScriptBasic. module for sqlite3
12:58 20/05/2012  Fix pointer assignment expression: *(*a+(i*sizeof(sys)))=b
13:27 20/05/2012  Fix a[++i]
09:29 22/05/2012  Fix inner macros: macro() macro() ... end macro end macro.
14:21 22/05/2012  Fix compact signature optional params (detected in SAPI voice)
14:42 22/05/2012  Update
23:45 22/05/2012  Refactor recordof / writestates
07:53 23/05/2012  Prevent macro expansion of attributes expression by precedenter: print recordof x
07:56 23/05/2012  Change format of #recordof
11:08 24/05/2012  Revoke "proc" keyword (ancient!)
15:53 24/05/2012  Refactor multiassign
17:14 24/05/2012  #show: prefix to display translated statement
22:10 24/05/2012  Fix stack management for temp storage for byref parameters
22:45 24/05/2012  Update
06:45 25/05/2012  Fix def problem when square bracket is first character in macro
09:00 26/05/2012  SBO2 development
09:00 26/05/2012  Update
17:45 26/05/2012  Update: Fix macro unique param names for substitution
12:58 27/05/2012  Fix unprototyped call array [..] param(..)
16:41 27/05/2012  Fix REMOVAL of final CR (13 10) in macros
08:55 28/05/2012  Update: Fix macro param fusion:  a##b##c  "a"#b#"c"
12:12 28/05/2012  New meta keywords: #print (can use with #str #hex)
21:59 28/05/2012  Refactor meta-expressions (operator identification etc)
02:52 29/05/2012  Fix #asm mode num literal float  params passed as single precision (examples/asm32/opengl2)
03:29 29/05/2012  But support casting of num literals (as float, as double), also explicit "convert"
05:26 29/05/2012  Support Array of calls: refactor "call":  call c[i](a,b,c)
05:36 29/05/2012  Update
00:48 30/05/2012  Revoke '->' arrow notation
00:50 30/05/2012  Support '=a' statement to leave value in accum (experimental)
17:52 30/05/2012  Fix '^' exponent operator (following metaval refactor)
17:53 30/05/2012  Update
19:47 30/05/2012  Fix issue with attribute expressions / itr recordof with classes
09:39 31/05/2012  Fix name resolution problem in classes (external object with same name as member)
10:11 31/05/2012  Update
10:18 01/06/2012  Refactor operand resolution. Support mapping with non-simple pointers:  sys v at t.v[4] etc.
10:18 01/06/2012  Refactor operand resolution for 'link' (creating function poiners)
10:18 01/06/2012  Update
18:45 01/06/2012  Update: Fix multiassign with functions (/examples/dataprocessing/taxonomy)
14:17 02/06/2012  Line feeds for asm instructions cwd cwde
18:22 02/06/2012  Fix type casting indirection (indt carry thru)
00:12 04/06/2012  Fix metaval expressions glitch:  dim[x*y]
01:07 04/06/2012  Fix Recordof (supress expansion in precedence function)
01:44 04/06/2012  Fix problem with const string (internal: remove call to stodata)
12:32 04/06/2012  Fix function casting with pointers:  s=cast char* fn() (pointer ignored)
16:56 06/06/2012  Fix short/long type redefinition: typedef short int
20:01 07/06/2012  Support "!" as alternative to "declare" "declare function" "declare sub"
20:02 07/06/2012  Projects/WinApiVB6 test API (Kent)
22:12 09/06/2012  Fix enumeration support for &h &o numbers.
13:04 10/06/2012  Fix functions returning higher types: can now be used as params.
16:29 10/06/2012  Fix ",=" prototype syntax: gap between comma and equals is accepted. 
22:30 10/06/2012  Fix macro stringer substitution: "Result: "#w#"=" w
04:36 11/06/2012  Fix bracket problem when macros are inside classes
13:00 11/06/2012  Fix shifts with variables as well as numbers a>>n a<<n
13:49 11/06/2012  Update
18:18 11/06/2012  Fix multiline multiassign problems
21:17 12/06/2012  Extend operator support for conditionals (objects and higher types)
08:14 14/06/2012  Inherited types can now take on protected/private attribute, preferring more restriction.
08:22 14/06/2012  Allow Static members to be inherited. (previously they were private)
21:01 14/06/2012  Update: fix manual
12:17 15/06/2012  Fix double indirection problem with object members (linking SAPI voice)
12:19 15/06/2012  Fix type matching problem with inherited types - matching by name (sapi Voice)
12:21 15/06/2012  Update
06:33 16/06/2012  Support full 'at' expressions : s="abcde" : byte b at (strptr s)
07:43 16/06/2012  Update
12:00 16/06/2012  Allow class to contain an indirect member as itself.
20:36 16/06/2012  Fix default alignments and indirection. (named params)
20:38 16/06/2012  Fix explicit conversion directive (use full expression for param)
23:41 16/06/2012  Review param encoding: test with /examples/parameters
23:43 16/06/2012  Update
11:37 17/06/2012  Update: Fix multiassign mapping following a string assignment
06:30 22/06/2012  Fix default params picking up wrong signature (value<->values)
08:14 22/06/2012  Introduce conditional equates %% : define if not already defined.
09:58 22/06/2012  Add floor() and ceil() float-macro functions to core
10:15 22/06/2012  Update
22:51 23/06/2012  Update: Rosetta Code Task Demos.
13:03 24/06/2012  Update: Candidate for release A039
16:11 26/06/2012  Extend semantics for let: let a=local rect : let b = new rect
17:49 26/06/2012  Fix to allow indirect self referencing structures (by pointer)
18:18 26/06/2012  Fix powers of negative numbers (even are positive)
18:25 26/06/2012  Replace esp operations with _sp stack pointer macro in deff macros.
18:27 26/06/2012  Update
19:26 27/06/2012  Trap undefined variables with leading #: #abc etc
19:35 27/06/2012  Update A039
23:42 29/06/2012  Fix small types loading: extend to full accum size
06:11 30/06/2012  Optimise direct string comparisons (bypass concat buffering) (Aurel)
07:31 30/06/2012  Update A039
22:41 01/07/2012  Update A039: fix string literal compares.
11:18 02/07/2012  Update A039: fix mixed multi-assigns (numbers following strings)


Alpha038

22:22 30/09/2011  Fix Inferred Type Params: function f(txt="A ", va=42.0)
12:46 01/10/2011  Fix autoconversion (num followed by string function) (typg=0)
05:37 03/10/2011  Trap variables where constants are expected (declaring arrays etc)
11:33 04/10/2011  Fix number to zstring and zstring* param autoconversions
07:39 05/10/2011  Support multi-element 'as' in types & classes: a,b,c,d as string
18:49 05/10/2011  Support for pointered multielement vector *a,*b
22:49 05/10/2011  Revoke Statusof
22:49 05/10/2011  Remove outer quote marks from recordof and #recordof
11:31 06/10/2011  New traps for block errors
10:58 08/10/2011  Refactor 'for' with more error traps
20:16 08/10/2011  Correct handling for tmp strings and bstrings passed to byref proc.
20:18 08/10/2011  New RTL function asstmi [ebx+2232] ' fence + asstmp
12:00 10/10/2011  TB o2 updates
03:00 10/10/2011  Fix redefinitions of previously defined type
08:03 11/10/2011  Delimit procs without params with +/\ but not * or -
17:56 11/10/2011  Refactor wval and ascii_to_float: update RTL32
04:24 12/10/2011  Fix protected/private methods in class header
04:25 12/10/2011  make class header "/\" more secure with cr
04:25 12/10/2011  Remove blanked lines from class headers (compacting)
06:38 13/10/2011  Refactor "Let"
18:17 13/10/2011  Refactor varbref (string params byref)
06:14 14/10/2011  Print prameter changed to cstr_
06:16 14/10/2011  _mid to modify zstrings
06:17 14/10/2011  Fix zstring concatenation width
06:18 14/10/2011  Replace all stp with cr in internal Assembler encodings
00:00 15/10/2011  Refactor local and temp garbage collection (to support re-entrancy in threads)
17:04 16/10/2011  Refactor attributes to support literalsa and type members as well as main variables
17:06 16/10/2011  New keyword: TypeCodeOf (to support new concatenator)
13:04 19/10/2011  Simplify top level array assigns detection (o2sema)
01:56 20/10/2011  New concatenator - local buffer to support reentrancy for multithreading
14:54 20/10/2011  Fix 64bit PE encoding glitch (Frank)
09:17 23/10/2011  Error traps around named parameters (Kent)
09:18 23/10/2011  Named parameters can be used without brackets
09:19 23/10/2011  Speech utility updated, (using thread safe string management)
09:22 23/10/2011  Improve line number tracking around classes and function prototypes
22:14 26/10/2011  64 bit mode float support
22:14 26/10/2011  RTL64 memory addlist, delist etc
07:43 27/10/2011  RTL64 prologs and epilog
07:44 27/10/2011  RTL64 bootstrap library
08:46 30/10/2011  Modify Attributes: strip quotes when 1st word in statement
08:47 30/10/2011  this supports sibling creation: fruit apple : typeof apple Bramley
13:21 30/10/2011  Tolerate 'void' as function return type
18:54 31/10/2011  NumberFormat 6 params controlling str() format
19:35 31/10/2011  Extended Hex 2nd param fixes width of number: hex(15,4): 000F
10:49 02/11/2011  Support #indexbase inside classes
11:37 02/11/2011  Trap unidentifed operands in Assembler construct: mov [u],eax
12:26 02/11/2011  Support arrays in prototype. (auto byref) long foo(long a[4]){...}
18:34 02/11/2011  Allow dotted members and indirect variables to be used with For: for fruit.i=1 to ...
08:39 04/11/2011  Trap undefined elements in structures
08:40 04/11/2011  Refactor 'ctype' function (internal)
13:59 04/11/2011  Review autoalign for primitives and inherited members
16:13 04/11/2011  Introduce 'packed' for packed types & typedefs (otherwise auto padded)
19:10 04/11/2011  O2 machine script numbers now tolerate gaps: hl 1234 same as hl1234
12:21 05/11/2011  Extended str(n) to limit decimal places. str(n,dp)
13:25 06/11/2011  fix array of objects / string element bug
12:30 09/11/2011  64 bit mode floats
12:30 09/11/2011  Refactor fpu types
07:33 10/11/2011  64 bit string functions debug
01:31 13/11/2011  64 bit compatibility for MinWin
01:32 13/11/2011  64 bit first windows program compiled
10:20 16/11/2011  64 bit classes
10:19 16/11/2011  64 bit DLL
13:16 16/11/2011  64 bit string param fix (Callcoc)
13:13 16/11/2011  64 bit ClassLibrary working.
23:42 18/11/2011  64 bit Opengl Working (compatibility wgl)
17:42 19/11/2011  change "sizeof" string/bstring/wstring/bstring2 to sys (4/8)
21:41 19/11/2011  Fix const evalualtion in MetaVal
00:39 20/11/2011  Fix Mid patch procedure for array elements and object string members
09:20 20/11/2011  Eliminate snap marker system (snp internal)
11:14 20/11/2011  Fix direct assignment for string functions (bypass concatenator)
22:35 20/11/2011  64 bit GDIplus images / Opengl texture transfer
21:56 21/11/2011  64 bit COM SAPI5 IspVoice speak
21:57 21/11/2011  Methods can no longer specify calling convention. Must match Extern spec.
22:00 21/11/2011  Check calling convention at start of procedures (internal)
07:16 26/11/2011  Fix attributes macro for "sizeof string" (corruption varf flag)
01:32 27/11/2011  64 bit compatible GDI (Peter)
09:43 28/11/2011  Add filenames for assembler error tracking
03:03 30/11/2011  Fix padding behaviour on inherited members
03:04 30/11/2011  64 bit string comparisons - stack alignment and calling rcx,rdx
03:53 30/11/2011  64 bit 3Dview now working
12:21 01/12/2011  64 bit comparisons in conditional statement: ensure stack alignment _sp
11:05 03/12/2011  Syntax option: declare abc() allowed as well as declare sub abc() or declare function abc()
12:29 04/12/2011  Fix name name clashes between methods and functions (efgee)
12:30 04/12/2011  Fix 64 bit autoconversion string to val.
15:28 04/12/2011  Fix 64 bit fpu calls: str(val())
04:53 05/12/2011  Passing strings to unprototyped procedures: @zstring, "literal", bstring, *string
05:53 05/12/2011  Support bothe arrays and functions as params in unprotoyped procedures
00:18 07/12/2011  Fix object/hilevel creation byref
19:37 08/12/2011  Refactor dim system: support mixed C and basic prototype members
19:38 08/12/2011  also supports any word order: function foo() export as long
01:20 09/12/2011  Fix dynamic compile string constants
02:12 09/12/2011  Revoke 'uncompile' procedure (now using inline data)
17:47 10/12/2011  Fix assembler error report (after include file) FILENAME: main source
06:40 12/12/2011  Fix conditional boolean function returning short: if GetAsyncKeyState(27) then ...
13:09 12/12/2011  Fix sticky byref/byval in declarations and prototypes
10:52 15/12/2011  64 bit loading of xmm registers put together with cpu registers. (Late)
09:10 21/12/2011  64 bit Internal (type -5) calls and classes use aligned cdecl, (not ms64)



Alpha037
                  SELF-COMPILE PREPARATION
19:21 14/07/2011  Calling convention "cpu" for fast calls
10:52 16/07/2011  Replace mkl etc. mk2,mk4,mk8
16:37 20/07/2011  Fix Object pointer ecx: problem showed in /examples/oop/features/AttachObject
16:40 20/07/2011  Test CPU call for objects
05:54 22/07/2011  Scite Oxygen.properties change FilePath to FileNameExt (compat Win98..)
11:48 22/07/2011  Prepare o2lexi.bas: trans strptr varptr
12:12 22/07/2011  Transfer isn ascl asclc wval from o2runt to o2lexi
22:54 22/07/2011  Change word() to tword()
22:54 22/07/2011  Fix rtl [ebx+160]=... in o2sema.bas
21:38 23/07/2011  Trap missing right brackets (functions)
21:53 23/07/2011  Prevent macros (params) swallowing right brackets
21:54 23/07/2011  Allow asm mode to support &h &o etc.
03:06 24/07/2011  Line numbers now appear in Asm error messages
11:00 24/07/2011  "label" for procedures: adds plain label above signatured label
17:03 25/07/2011  Fix "export"
12:12 26/07/2011  Support string and wide string constants: const wstring s="abc"
05:10 27/07/2011  Fix function overloading (o2sema.bas)
11:38 28/07/2011  GXO2 & EXO2 Compilers fix -b option to print machine script
16:22 28/07/2011  Refactor o2hdrs.bas makePE decoupling.
11:33 02/08/2011  Refactor dic()
12:54 02/08/2011  Fix assign-within-bracket bug: Return 10+(number=number+1)+100
12:57 02/08/2011  Fix Return ++number
11:34 03/08/2011  Encode string literals as bstrings
14:22 03/08/2011  Const string returns address
06:38 04/08/2011  Dim/const string now supports series of data strings ('data' word is optional)
16:38 04/08/2011  Fix Asm bugs affecting 'test' and 'xchg': test [ebx+4096],eax : xchg [ebx+4096],eax
08:31 05/08/2011  Asm (internal) removal of redundant err messages. Mods to axdi and axim codings.
11:29 07/08/2011  Refactor string compatsig conversions for more efficient string param processing
11:30 07/08/2011  Fix len to return the number of characters in a wode string.
11:31 07/08/2011  Fix multiAssign to assign correctly to zstring ptr members
11:32 07/08/2011  Fix '@' / '&' to return address of string literal: @"ABC"
11:59 07/08/2011  Also applied to returning address of string constants
00:28 15/08/2011  Fix ++v --v when used with autodim: v=42 : a=++v
13:18 15/08/2011  Reintroduce 'exposed' functions (experimental'
07:28 17/08/2011  Allow comma separators between function tagwords: ..as long,callback,exposed etc
06:08 18/08/2011  Add error trap: "Too many procedure nesitings. Depth limit is currently 7
20:03 18/08/2011  ThinBasic Oxygen update
20:03 18/08/2011  Allow comma separators between class tagwords.
04:56 20/08/2011  Plug memory leak due to number-to-string autoconversion
15:30 21/08/2011  Extend string autoconversion for float intrinsics: sin "1"
08:27 23/08/2011  Fix negative variable handling in expressions: x/-v : x/-(v+4) : x/-v[10]
19:21 26/08/2011  Fix array param support in calls without protoypes: call c a[42]
22:06 26/08/2011  Trap mismatching parameters of higher type. apple a : banana b : EatBanana a
03:26 31/08/2011  Tools/search/SearchFiles utility
22:00 31/08/2011  Fix label/procedure colon confusion: fun: fun : fun():
06:22 01/09/2011  Refactor exportable labels
08:27 08/09/2011  RTL32 remove global variable 'a'
09:12 08/09/2011  Support dot labels placed to the left of an asm instruction
06:12 09/09/2011  Fix Void* tolerance when passing higher type params.
06:13 09/09/2011  Unfix label/procedure colon confusion: fun: fun : fun(): (not safe)
08:59 09/09/2011  Revoke signatured / exportable labels
13:25 09/09/2011  Fix multiline #defines (supports line numbers and Basic comments)
15:33 09/09/2011  Fix multiline named paramers (allow right bracket on separate line)
01:05 18/09/2011  Fix string literal assignment to integer types. string pointers must @"string"
10:45 18/09/2011  internal: uword() / wword() terminated by ; or '
11:34 18/09/2011  Internal: remove underscore from method labels
14:07 18/09/2011  Fix temp storage for autoconverted byref variables
13:11 20/09/2011  Colon labels must be on a line with no other statements
17:09 20/09/2011  FPU calling convention: not _return variable leave value on fpu stack.
00:08 25/09/2011  Fix Wstring byref/byval param bug (procedures)
07:50 25/09/2011  Fix wide string<->ascii autoconvert for user procedures
13:56 25/09/2011  Trap assignments to a bstring byval param in a procedure
05:14 26/09/2011  Fix zstring indrection problem with mid left getfile etc
05:37 26/09/2011  Fix assignments to string param passed byval (internal o2expr & o2assm)
22:22 26/09/2011  Line number tracking improvements
23:32 26/09/2011  Fix problem with comment lines following 'public' etc in class header.
11:15 27/09/2011  Changes to prototypes for: mid val unic asc len instr
12:49 27/09/2011  RTL len (lenz) for zstring andwzstring2
13:27 27/09/2011  Trap invalid #file filename
16:34 28/09/2011  Revoke dotted macros (refactor macres)
21:32 28/09/2011  Fix data field delimiter misread (internal writestate/readstate)
05:22 29/09/2011  Refactor COM SAPI voice example
05:23 29/09/2011  Refactor 'new' and 'del' : (getmemory freememory)
05:42 29/09/2011  Revoke wide string literal form: w"..."



Alpha036

10:55 08/06/2011  Fix Class library table copyover. (class libraries)
12:08 08/06/2011  Support typedefs in metalanguage: #if leftmatch MatrixType double ...
15:42 08/06/2011  compact internal type record (remove redundant size field)
08:06 09/06/2011  Revise attributes: structureof encodingof recordof
08:40 09/06/2011  Revoke attributes support for individual elements of types
15:58 09/06/2011  Fix grouped param indirection in method protypes: m(single *x,*y,*z)
16:43 09/06/2011  Fix var mapping offset bug: rgba c at @pix (where pix is passed byval)
18:25 10/06/2011  Fix 'inherits': equivalent to: 'from' 'of'
22:33 11/06/2011  Revoke array-of-pointers feature
17:01 12/06/2011  Address optimisation for: @pv=@v
07:17 13/06/2011  Further internal optimisation of indirection. (wpfx indir)
07:13 14/06/2011  Perform macro expansion before precedence evaluation.
13:34 14/06/2011  Fix single word evaluation for referenced vars: if s then ...
23:00 15/06/2011  Refactor Addsrc (internal o2sema)
23:00 15/06/2011  Support oop meth address assignments
23:03 15/06/2011  Design propose reentrant string processing for multithreading ..
11:27 16/06/2011  Support single line conditional like this: if i>2 : (a=1) else (a=2)
17:47 16/06/2011  Fix single line do{}
18:04 16/06/2011  Support unconditional while{}
18:38 16/06/2011  Support eg: for i=1 tp 10 step 2:  for i=1,10,2
18:54 16/06/2011  Support single line: for i=1 to 10 step 2 {...}
06:52 17/06/2011  Internal word insertion and recursion optimisations -4 -6 -7 -15
10:48 18/06/2011  Support "export external callbact at.. link.." in C style prototypes
10:49 18/06/2011  Internal: wword() also delimited by { }.
14:47 18/06/2011  Remove distinction between "sub" and "function"
14:49 18/06/2011  Revoke enumeration signatures in functions (to be reworked)
19:04 18/06/2011  Add Console routines to inc/ folder
22:09 19/06/2011  Fix Line numbers inside classes
13:59 20/06/2011  Allow functions inside methods to access static class members
18:27 20/06/2011  Support macro parameters without brackets (like functions)
20:35 20/06/2011  Fix member array assign in types. a.b[c]=....
09:53 21/06/2011  Division expression:  enforce float division with integer params.
22:22 21/06/2011  Prevent inner function from accessing non-static class members
11:00 22/06/2011  Allow all functions inside a class to access static members
21:10 22/06/2011  Sqlite simple demo in examples/DataProcessing
00:11 23/06/2011  support static / non static type inheritance
01:18 23/06/2011  Support inherited classes without qualifier word "has"
01:36 23/06/2011  New Body marker in Class definitions "/\" instead of "/"
11:20 23/06/2011  Fix byref variables: v++ : v--
15:40 23/06/2011  No access to inherited static properties (not mapped so must use accessor method)
17:44 23/06/2011  Revoke method array
01:35 24/06/2011  Fix VFTable offset problem (caused by member UDTs)
10:24 24/06/2011  Enable Let to create higher types and objects byref
08:53 25/06/2011  Fix multiline named param passing
09:30 25/06/2011  Fix grouped + named param passing in methods (prototypes)
13:20 25/06/2011  Add IDE folder / Add new Oxygen.properties etc for Scite by Kent Sarikaya
15:11 25/06/2011  Prevent dotted names from being autodimmed (relaxed mode)
07:02 28/06/2011  Fix assign operator for quads and float types: if f :=42 then ...
08:45 28/06/2011  Allow first term number to string autoconversion: print 1 " m/s"
11:28 28/06/2011  Fix attribute : typeof(string)      (disambiguation from string() function)
12:36 28/06/2011  Fix Power autoconversion: a=b^c
14:15 28/06/2011  Relax need for brackets around named params: fun a=6, b=7
14:52 28/06/2011  Allow simple function calls to be delimited by commas: main funA,FunB, FunC
21:57 28/06/2011  Revoke implicit comments ===== ------
23:11 28/06/2011  Fix static array of elements in a class.
00:02 29/06/2011  Fix Himac closing bracket (internal)
16:44 29/06/2011  Fix compilers Asm isting and change -a Assembler script -b machine script
16:46 29/06/2011  Adjust Visible line listing 'L1 'L2 ...
17:16 29/06/2011  Fix single line assign/conditional: if a:=b then c=d
11:40 30/06/2011  Ellipsis: declare function wsprintf (zstring *result,*format, ... ) as sys
02:15 01/07/2011  Allow Alias,lib, cdecl etc in C style function declarations
05:07 01/07/2011  Ensure stack is always cleaned after ellipsis call (even if not cdecl)
04:55 02/07/2011  Fix attribute sizeof sys any bool according to byte count
11:00 05/07/2011  Refactor type identification tests (internal)
21:29 06/07/2011  Fix method calls from object arrays: ob[31].meth()
23:02 07/07/2011  Enhancements to For. For i to <e ...
21:51 08/07/2011  Improved error trap for undefined variables (#autodim disabled)
08:15 09/07/2011  Correct interpretation of byte operations. (widen accum to full width)
11:06 09/07/2011  Refactor conditionals
16:38 09/07/2011  Update thinbasic_oxygen
14:07 10/07/2011  Direct char/zstring params now working correctly
00:38 11/07/2011  Pass Back string type conversions (internal pat(pa))
07:45 11/07/2011  Revert to standard lexing for low-level macro params.
07:09 12/07/2011  Fix val() and num function concat bug
07:10 12/07/2011  Fix post op increment/decrement type conversion bug
07:11 12/07/2011  Fix string autoconvert float stack corruption (embedded float functions)



Alpha035

20:21 19/05/2011  Support 'switch..break ..end switch syntax (C switch logic)
09:56 20/05/2011  Fix byte to float (error with packed bytes)
09:57 20/05/2011  Fix structure corruption when extracting #defines
09:57 20/05/2011  Auto conversion of rhe char* return type to zstring in function tables
09:59 20/05/2011  .. other poinered types are returned as sys.
12:23 20/05/2011  Fix accum type casting for functions returning zstring ptr.
22:08 20/05/2011  Fix superquote - protected from double pass.
07:46 21/05/2011  Fix Hex conversions to support quads and dwords>0x80000000
19:05 21/05/2011  Fix Quad literals to get full quad precision (avoiding double intermediate)
15:04 22/05/2011  Revoke #fpu and #cpu expression directives
22:04 22/05/2011  Allow explicit expression typing (for low level call): call f double a, double b
11:45 24/05/2011  Create COM folder in inc/ to holder com aps such as 'voice'
13:53 24/05/2011  Clipboard example in examples/system
23:37 24/05/2011  Clipboard Speaker in examples/sound
17:04 25/05/2011  Alter 'news' to return bstr instead of sys. Also alter 'new' macro for compatibility
16:53 28/05/2011  Fix resolution of void* and sys* in structures.
16:27 29/05/2011  Fix bug relating to float iterators: and post inc/decrement f++/f--
06:15 31/05/2011  Examples/math/matrix* examples/math/polytope
12:45 31/05/2011  Assembler supports single double extended: fld double [ecx] as well as fld qword [ecx]
13:01 31/05/2011  Metalanguage leftmatch:  #if leftmatch MatrixType single ...
14:25 31/05/2011  Fix indirect array of doubles (space allocation)
09:38 01/06/2011  Optimse Asm float syntax including macros: fix fxch (with no prams)
11:51 01/06/2011  Revoke multidimensional arrays from core: use macros instead.
11:51 01/06/2011  Revoke "termsof" "extentof" "minormajor"
11:52 01/06/2011  Spanof returns number of dimensions
01:18 02/06/2011  Revoke low level macro directives: %0 %a %b %e %h %l %n
22:38 02/06/2011  Compiler internals: isolate lexing functions. Better separation for parse and encoding.
00:32 05/06/2011  Line numbers carried through to Assembler.
07:37 05/06/2011  Disable 'BELOW' error message line
14:55 05/06/2011  Fix allocated byte length (identypes) for extended types: now 12 not 10
17:39 06/06/2011  Class factory experimental
17:39 06/06/2011  Let keyword reintroduced
11:03 07/06/2011  Fix casting when used with pointered variables: <byte> *pb=bt
16:59 07/06/2011  Fix indirect array element size: union ubs byte*b, bstring s
17:02 07/06/2011  Antivirus False positives reporting Avira, Nod32, (BitDefender),F-Secure,GData,nProtect,Avast


Alpha034

22:02 02/05/2011  Procedural city experiments
11:33 03/05/2011  Restructure PortViewer2
05:59 04/05/2011  Remove Asm keywords from manual
19:20 07/05/2011  Change RTL Filename macro usage:  $ FileName "Myfile.exe"
02:22 08/05/2011  recognize 'float' as single type in basic syntax
02:58 08/05/2011  removed these types: __int16 __int32 __int64 int8_t int16_t int32_t int64_t uint8_t uint16_t uint32_t uint64_t
13:25 08/05/2011  SBO2 techniques for returning data to SB
20:15 09/05/2011  Threaded Window demo in examples/system/threads
07:58 10/05/2011  Add keywords to Manual: public private protected once
07:41 11/05/2011  SBo2 threading with message handling protocol
12:04 11/05/2011  inc/StartWin.inc standard windows startup
12:05 11/05/2011  remove min.max functions from MinWin.inc
10:58 12/05/2011  support #define within structs (for SB headers)
09:23 13/05/2011  change dim pointer syntax to: dim as sys *a, *b, *c instead of: dim as sys* a,b,c
09:43 14/05/2011  equates evaluation now working for arrays: dim a[h*w*4]
09:44 14/05/2011  variable name offsets now supported in asm (using $ marker: [eax*4+$ var+offs]
14:37 14/05/2011  simple expressions now supported in low level calls eg: call myfun a+b,c*d
11:02 15/05/2011  Assembler makeover
16:56 15/05/2011  Oxygen machine script sys codes hl hq-->hg  ga gq-->gg (used in PE headers)
21:12 15/05/2011  Fix unsigned word --> float autoconversion (accumulator upgrading)
17:52 16/05/2011  Anonymous types: dim as (byte r,g,b) *pix,p,q
20:28 16/05/2011  Adjust low level macro to take word parames delimited only by white space
05:07 17/05/2011  Fix resolution of array variable member group addresses: @material[n].diffuse (excluding .green)
07:26 17/05/2011  Fix @ usage in: dim as sys b at @a ' (now equivalent to & a)
12:39 17/05/2011  Change syntax for linking functions to host: function f() as long  link #v3
08:25 18/05/2011  Support C arrow '->' notation (conflate with dot but aware of indirection)
18:29 18/05/2011  Fix function table prototype matching.
01:28 19/05/2011  Support C-style function pointer prototypes in structures
15:18 19/05/2011  Support ascii cases:  case "a" .. case "a" .  Case "a" to "z"


Alpha033

03:15 18/04/2011  Fix problem passing uninitialised string array element byref
23:59 19/04/2011  ImgWin (GDIplus) support for saving images in bmp/jpeg/png etc
18:36 20/04/2011  ImgWin (GDIplus) TakeWindowSnapShot
18:37 20/04/2011  Fix problem with sizeof typedef types
11:51 21/04/2011  ignore 'const' in types and typedef struct element declarations.
12:17 01/05/2011  revoke #economy mode as unsafe (exclusion of unused procedures)
23:56 01/05/2011  PortViewer2: add 'P' to take jpeg photo of client area


Alpha032

12:41 05/04/2011  Fix multiassign string bug  eg: s[n]<="abc","def"
16:59 05/04/2011  MinWin File/Directory API
21:41 05/04/2011  Fix integer divsion -> float calc
22:44 05/04/2011  Fix basic-style block enumeration
06:28 06/04/2011  Fix enumeration identification in overloadable functions (late evaluation from signature)
08:31 07/04/2011  Support local classes inside functions.
19:08 07/04/2011  Fix bug affecting multidimesional arrays in majorminor order (default)
20:33 08/04/2011  Remove restriction on overlaying (redefining) register names
12:06 09/04/2011  Simple Opengl example: OpenglWin1 in examples/GUI
17:14 11/04/2011  type declaration: support mixed types like this: type t long x,y,z,single v,w
15:19 15/04/2011  adapt PortViewer2 to run with GDIplus for loading jpg & png textures
15:18 16/04/2011  support recursive structures (pointered) for trees, linked lists etc.


Alpha031

08:21 27/03/2011  Support this syntax for c style functions: long fun(long v)=v*2
13:45 29/03/2011  Support all block params in low level macros (..) [..] {..}
23:52 31/03/2011  Fix '*=' '/=' for number literals eg: a*=42
23:53 31/03/2011  Fix bug affecting named-parameters with functions.
00:18 01/04/2011  Fix bug which prevented leading null param eg: fun(,2,4)
12:42 01/04/2011  Fix bug affecting asm calls with operand literals eg: a=LoadIcon [ebp+4], ....
15:14 01/04/2011  Establish ImgWin.inc library for loading/saving jpg and png files (GDIplus)
14:48 02/04/2011  Remove 'remain' (use 'mod' instead)
22:37 02/04/2011  Fix Manual indexing bug affecting wordlink list (getsdata function)
06:15 03/04/2011  Enhance manual wordlink page to include 'action' field tab


Alpha030

11:22 11/03/2011  Support for null parameters: foo(a,,c,d,)
16:51 11/03/2011  Set Basic/o2h as the default mode (not asm).
09:32 12/03/2011  "version" macro returns version coding in hexdadecimal
14:11 12/03/2011  Metatypes: rationalising encoding
11:20 13/03/2011  Support named parameters in methods and overloaded functions eg: new vector v (x=1.5)
08:32 14/03/2011  Support for default params when no params are given
08:33 14/03/2011  Support to enable register-like names to be used for object members eg: ax,bx,cx
15:10 14/03/2011  Overhaul operator overloading system (now using OOP): method "+"() ..
00:37 16/03/2011  Shorter coding for access to class static members
20:08 16/03/2011  Develop macros for constructing arrays of objects (examples/OOP operators)
21:53 16/03/2011  Manual generator additions: ( incfile1: incfile2: see: )
07:46 18/03/2011  Support for "recordof" with macros
07:47 18/03/2011  Improve bracket handing with attributes: recordof(x) sizeof(x) etc.
08:43 18/03/2011  New internal metatype: system termination macro (-22)
13:51 18/03/2011  "Prototypeof" returns the protypes record of a function, sub or high level macro
02:38 19/03/2011  "operator" now supports multiple declarations: operator clear, combine,...
04:17 19/03/2011  declared operators may be used as commands on objects: eg clear vec[2]. ( translates: vec[2]."clear"
19:50 21/03/2011  Consolidation of metatypes
04:44 22/03/2011  Improved explicit casting:  a=(as long) s : print <long>s  etc.
04:45 22/03/2011  ITR passing enumeration literal requires full dotted name:  f(things.shoes)
06:13 25/03/2011  Interpret &h &o &b as addresses of variables, not as numbers
09:15 25/03/2011  Enhanced Enumeration to support already defined internal enum symbols eg: GDI+ flips
06:41 26/03/2011  ImageWin example with GDIplus
06:42 26/03/2011  Adjustments to MinWin for working with #case capital (Sensitive to fully uppercase words)

Alpha029

01:40 11/02/2011  Fix Asm bug affecting "test" >8bit r/m and 8 bit immediate
21:05 14/02/2011  New Class feature: nested elements.
22:34 14/02/2011  Minor correction to compilers gxo2 & exo2 error reporting
05:47 15/02/2011  Remove SinCos command (still available as fsincos )
22:49 15/02/2011  Further work on String Management/GC (fixes problem with manualgen)
03:27 17/02/2011  Remove "Replace" function from RTL and put into Stringutils.inc
09:40 19/02/2011  Modify RTL "delchain" to avoid processing null chains
20:07 22/02/2011  Rework variable Autoconversion for function params etc.
11:21 23/02/2011  Prevent nested strings from entering Commutator
07:06 24/02/2011  Remove compound symbols facility (names made of more than 1 word or symbol)
07:09 24/02/2011  Remap Internal RTL Concatenator procedures (must recompile Oxygen-dependents)
07:11 24/02/2011  Further work on wide strings: unic wchar, autoconversion
04:37 01/03/2011  Sub inside classes: improve detection of asm sub as distinct from procedure sub
11:48 01/03/2011  Fix 'typeof' for identifying UDTs, classes etc
05:05 03/03/2011  Fix "Any" to prevent all attempts at type conversion (Function parameters: byref any ..)
02:49 04/03/2011  Add MessageBoxW to Oxygen including bootstrap imports
13:56 04/03/2011  New multiassign operator <= (=> still supported)
15:58 05/03/2011  Refactor ++/-- and array resolver
10:45 06/03/2011  Support for "as" casting word eg: print as wstring txt
15:58 06/03/2011  Remove astring and pstring as built-in aliases for string
16:30 06/03/2011  Introduce cstring (accepts any string param in a prototype)
16:30 06/03/2011  Introduce gstring (accepts any bstring param in a prototype without converting)
05:53 07/03/2011  Fix multilevel precedence bug: a>b and a>c or a>d ---> ((a>b)and(a>c))or(a>d)


Alpha028

07:33 03/02/2011  Plug memory leak relating to string expression parameters (when calling funcs)


Alpha027

12:10 12/01/2011  Fix rex coding (64 bit mode) assigning immed values to [r8]..[r15]
16:48 12/01/2011  Fix string literals in 64 bit mode
08:51 13/01/2011  Linker support for wide string literals eg: w"Hello World"
06:18 28/01/2011  Fix precedenter handling of empty brackets in expressions: if foo()=1 and v=1 ..
07:30 28/01/2011  Support functions without brakets in expressions: foo=42 : if foo=42 ..
12:15 28/01/2011  Fix ++/-- for float operands

Alpha026

13:34 05/01/2011  Support asm push/pop for 16 bit registers ax bx etc.
06:54 06/01/2011  fix asm ability to read dotted operands in square brackets. eg: mov eax,[foo.a]
23:56 06/01/2011  RTL2: 32 bit runtime library for use in Independent mode compiled programs
13:53 07/01/2011  _epilog system macro for appending code to end of source.
14:17 07/01/2011  prevent direct execution of independent mode compiled code
21:32 09/01/2011  Fix Assembler bug affecting shld / shrd eg: shld esi,edx,4

Alpha025

06:02 23/12/2010  remove "loadlibs" and "linklibs" commands
06:02 23/12/2010  fix conflict between scope brackets and dim statements
11:20 28/12/2010  C style iteration with for (i=1 ; i<=10 ; i++){...}
11:21 28/12/2010  C style do {..i++ } while (i<=10)
06:22 29/12/2010  fix "while 1"
00:35 31/12/2010  Scrap "symbols" directive
09:12 31/12/2010  Support C style semicolon separators with "#semicolon" directive (normally comment marker)
07:13 01/01/2011  #economy directive to exclude unused procedures from compilation
07:14 01/01/2011  Improve compiler string pool. (reduce size & make flexible)
07:48 01/01/2011  Scrap "Exposed" prefix. (exposing function inside a scope)

Alpha024

12:35 19/12/2010  "new" and "del" commands for creating deleting dynamic objects
12:36 19/12/2010  Fully implement manual html generator tool (output for chm compiling)
12:39 19/12/2010  Further geometry in GUI demo PortViewer2
13:38 19/12/2010  Source Code folder now named "src"
13:39 19/12/2010  "lib" folder created and reserved for supporting DLLs.
06:08 22/12/2010  improve error trapping in declare statements: declare function/sub/operation
18:07 22/12/2010  enumerations now start from 0 by default instead of 1.

Alpha023

16:21 11/12/2010  Fix problem in type defs showing up on inherited structures as false "private"
17:22 13/12/2010  Set up "inc" directory
00:22 14/12/2010  Fix problem related to comparing "short" types. (attempt to push ax instead of eax)
11:05 14/12/2010  Add exp(n) function (euler number e^n)

Alpha022

16:58 04/12/2010  OpenglView demo Gauss Surface, noise generation, texture
17:00 04/12/2010  Openglview Various additional keyboard controls
06:35 05/12/2010  Fix problem associated with assigning other integer types to a byte type (unsigned)
18:26 08/12/2010  Fix problems associated with Arrays within Types (including C TypeDefs)
18:29 08/12/2010  Demo of multiple Opengl child Windows.
20:39 08/12/2010  Support Metacommands (preprocessor) within Types and Typedefs

Alpha021

15:33 16/11/2010  DLL process attach return codes. set to zero when Oxygen is not located.
16:46 21/11/2010  Arrays in class structure: this format now works eg: 'single s[100]' same as 's[100] as single'.
16:51 21/11/2010  Openglview EditControl mouse places caret to the right of the character.
16:54 21/11/2010  Opengl Edit controls now working independently and no longer interfering with others.
22:21 22/11/2010  Fix over-zealous garbage collection on concatenated string functions.
22:27 22/11/2010  Manual update.

Alpha020

07:03 09/11/2010  Fix multiAssign bug affecting param expressions with brackets:  n=>a,(b+1),c
07:06 09/11/2010  Fix precedence bug associated with assigning to an array.: a[42]=2*b+4
10:59 10/11/2010  OpenglView Ctrl PgUp/Down for beginning and end of text
11:00 10/11/2010  Reinstate OpenglView Edit Control borders
10:30 13/11/2010  Fix case sensitivity in asm conditional jmups: jne jz etc.

Alpha019

03:47 20/10/2010  Rework lcase ucase ltrim rtrim mid left to always return bstrings including empty strings
07:28 24/10/2010  Rework garbage collector
03:50 20/10/2010  First version of program formatting utility. 'Indent'
07:29 24/10/2010  Add scrolling text to OpenglView
11:40 27/10/2010  Add word and character picking system to OpenglView
11:41 27/10/2010  Add proto Syntax highlighting to OpenglView
11:41 27/10/2010  Lbutton 2 click and 3 click detection / OpenglView
10:37 28/10/2010  Removal of "Data" "Read" and "Restore" from Oxygen core (to be implemented as lib functions)
10:40 28/10/2010  StringUtil classes
04:10 06/11/2010  Add line editing to OpenglView
04:11 06/11/2010  Add multiple edit control instances, with moving and scaling  to openglview
04:12 06/11/2010  Add 'exit for' and 'exit while' to Oxygen
05:18 06/11/2010  Fix integer a*=2 bug
05:57 06/11/2010  Fix Len(nullstring) GPF
23:00 06/11/2010  Enable default params to be used with methods
00:24 07/11/2010  Resolve mixed type comparison (convert to left side type before comparing)
08:11 07/11/2010  Basic comments now suppress C comments eg: '/* ...
09:48 07/11/2010  Fix support for scoped local vars (Stack allocation at start of procedure only)
14:37 07/11/2010  Reduce precedence for auto string conversion of parameters
16:16 07/11/2010  Fix Array address expressions with sq brackets eg: &a[42]  &a.b[42]
01:59 08/11/2010  Compiler GXO2 now has option -m to display errors etc in messagebox.
03:46 08/11/2010  Reinstate low level 'Data' statement using o2 script but not Basic mode.

Alpha018

23:36 17/10/2010  Add fonts to OpenglView
13:34 18/10/2010  improved precedence rules for comparators and logic: eg: if a=b+1 and c>=d then ..
17:07 18/10/2010  fix problen with boolean conditionals (if a then ..) inside case blocks.
19:19 18/10/2010  Add object picking procedure to OpenglView

Alpha017

05:08 17/10/2010  Updates to OpenglView. - Single port viewing, Keyboard and Mouse Controls
21:22 17/10/2010  +Viewing Modes

Alpha016

15:57 16/10/2010  Fix bracketed comparator bug. if (x=n) then .. where n is a number.

Alpha015

17:58 13/10/2010  Consolidate GUI and Graphical (Opengl) examples. remap SBO2 examples to match.
18:01 13/10/2010  Named Shared Memory example
18:01 13/10/2010  Fix Automatic type conversion for C header derived types.
18:04 13/10/2010  Child Windows example
19:10 15/10/2010  Fix memory leak caused by temporary strings.
19:11 15/10/2010  Remove "Detach" message generated in console applications when Oxygen terminates.

Alpha014

21:56 12/10/2010  Support for placing UDTs in class static section
21:58 12/10/2010  comments allowed between the lines of a multiline expression

Alpha013

13:07 09/10/2010  #console directive to support console programs (PE SubSystem 3).
13:09 09/10/2010  Register snapshot tool and other utility code in the tools section
05:44 10/10/2010  New implementation of Replace() Function in runtime library
05:45 10/10/2010  New Entry and Exit procedures in Oxygen.dll. Allows C runtime to initialise. (cure for val() problem)
05:49 10/10/2010  Facilitate decoupling of runtime library from main Oxygen code.
13:37 10/10/2010  New #blockdepth displays scope level at compile time - good for spotting unclosed blocks
13:41 10/10/2010  New #recordof displays full internal record of a declared entity at compile-time.

Alpha012

00:07 05/10/2010  Oxygen compiled with FB version 0.21.1 (with val() substitution)
07:44 05/10/2010  rewrite asm for encoding load of literal doubles to FPU (compat FB 0,21,1)
07:38 05/10/2010  Reorganise prolog code for Dynamic (secondary) compiling
07:39 05/10/2010  Reinstate suffix stripping for equates etc (# $ & %)
07:41 05/10/2010  Correction in thinBasic version: to include optional param in thinBasic_VariableGetInfoEx
08:01 05/10/2010  New diagnostic command for tracking unclosed brackets at compile time: blocklevel
08:09 05/10/2010  Quad variables now print correctly
08:13 05/10/2010  long members of UDT array now print correctly
 
Alpha011

09:11 29/09/2010  catch undefined arrays
09:11 29/09/2010  fix assembly code executables (now require small prolog for RTL table)
22:12 01/10/2010  Fix Asm Windows and Opengl examples
22:13 01/10/2010  Extend compiler exo2 and gxo2 compilers to enable machine script listings (-a switch)
22:14 01/10/2010  Adjust ScITE config so that Ctrl-F7 displays the maching script/assembler listing
22:16 01/10/2010  New Windows GUI examples in the GUI folder

Alpha010

23:31 26/09/2010  Refactor to improve overloading instrinsic functions
23:33 26/09/2010  'align' directive to be used inside data structures and classes.
09:36 27/09/2010  Remove CPU-based quad operations (now handled in FPU)
09:38 27/09/2010  'deff' macro introduced for creating additional floating point functions.
00:17 28/09/2010  New compiler tools (written in FreeBasic): EXO2 for console and GXO2 non-console

Alpha009

15:06 24/09/2010  Review and fix dynamic (secondary) compiling examples
15:07 24/09/2010  Add Uncompile function to use following dynamic compile and exec.
19:00 24/09/2010  Allow void types to be used with ptr or '*' directly when creating variables.
23:33 24/09/2010  Fix name clipping for inner classes

Alpha008

06:57 20/09/2010  Measures to avoid antiVirus false positives:
06:58 20/09/2010  Include an intitialised data section in EXE/DLL files
06:59 20/09/2010  Remove path oxygen seeking routine in EXE/DLL. Use an Oxygen.cfg file instead.
06:59 20/09/2010  Sort exported symbols into ascending ascii order for DLLs
21:08 22/09/2010  Correction to compact Basic declarations Byref. eg: Byref Long, Byref String ..
21:10 22/09/2010  Fix stack usage tally for CDECL calls: (caller cleans the stack). Check with SQLite
21:13 22/09/2010  Remove all embedded data from code section and place in data section (DLL/EXE files)
21:16 22/09/2010  Give error message when EXE file unable to locate Oxygen.dll.

Alpha007

21:56 16/09/2010  Multiassign correction to support huge assignments>1000 elements.
22:12 16/09/2010  correction to support square backets in dim variable assignments.
05:44 17/09/2010  Added (db dw dd dq) to reserved word list
06:02 17/09/2010  Compress package to zip using 7Zip

Alpha006

00:49 16/09/2010  additive includepath and librarypath eg: #includepath +"glo2/"
00:51 16/09/2010  include ScriptBasic SBO2 demos with examples
01:54 16/09/2010  update eo2.exe extending oxygen search path (to match co2 and cco2)

Alpha005

10:25 15/09/2010  Include Oxygen.dll source code and compile instructions (FreeBasic 0.20)

Alpha004

03:46 14/09/2010  Correction to extern lib ".." virtual
16:09 14/09/2010  Accepts "else if" as well as "elseif"
07:08 15/09/2010  Adjustments to error() : destructive read, and proper ending of names

Alpha003

11:14 13/09/2010  Change IDE to Scit (with uncompressed sections)
12:05 13/09/2010  Support for "extern lib "class.dll" virtual" for clients using class factories etc.

Alpha002

22:15 12/09/2010  Fix OOP ListObject4 example (co2 compiling / string concatenation)
22:17 12/09/2010  Large Multi assigmnet fixed (macro blowout counter cleared between assigns)
00:09 13/09/2010  Support "extern export" for procs and & class libraries

Alpha001

03:39 12/09/2010  Resources may now be attached to compiled files. (rsrc is last section in file)
03:39 12/09/2010  File paths containing spaces supported.
04:45 12/09/2010  tools updated: cco2 co2 eo2


Prior records:

  'OXYGEN
  '======
  '
  ' 14:50 19/04/2008 start
  ' 05:11 23/04/2008 o2_View_file
  ' 05:46 09/06/2008 o2_len o2_buf o2_exec o2_asmo o2_asmo_file
  '
  ' 06:49 09/06/2008 structures variables,arrays data & macro % params
  ' 10:26 19/06/2008 symbol = () = {} etc 
  ' 12:00 21/06/2008 macro params %a %b %e
  ' 20:15 24/06/2008 symbol pair macros and vald strd functions
  ' 11:36 29/06/2008 macro names containing several words and symbols `:)` `:D` `++` `old harry` etc
  ' 11:29 04/07/2008 reincorporate o2asm.dat back into dll
  ' 17:55 20/08/2008 s=`hello` and fix mixed macro params
  ' 19:18 23/08/2008 add line break %l to macro params. Fix thinCore ParseString bug
  ' 09:48 27/08/2008 OOP with virtual tables
  ' 23:16 27/08/2008 indirection asignment *s=sizeof a
  ' 09:48 31/08/2008 function signature checking and function overloading. also `with` function
  ' 06:19 01/09/2008 static scoping (maintaining indexer). also KERNEL const
  ' 04:49 02/09/2008 composites, typeof
  ' 05:32 05/09/2008 'of' single inheritance for COM. also simpler unstructured vt
  ' 15:26 07/09/2008 '-' private members and abstract members . also fix hash array carryover
  ' 21:20 08/09/2008 defs
  ' 04:42 10/09/2008 use sysalloc for getmemory
  ' 09:29 17/09/2008 & dynamic objects. Also remove reg asignments redundant ops
  ' 17:07 21/09/2008 indexers local indexers static.  colon statement separators :
  ' 21:15 22/09/2008 structureof scriptof typeof statusof
  '-------------------------------------------------------------------------------------------
  ' 27/09/2008  o2h commenced
  ' 01/06/2010  64bit encoding
  ' 04/07/2010  implicit this masks global variables but not kernel symbols
  ' 05/07/2010  real line numbers and error trapping
  '-------------------------------------------------------------------------------------------
  '
  'O2 Lex
  '
  ' 18:21 29/07/2008  collect lexing functions
  ' 09:48 27/08/2008  OOP adaptations / virtual tables
  ' 10:18 31/08/2008  isq isc ise functions
  ' 16:14 07/09/2008  array cleaning initb: null size car error 103
  ' 11:24 08/09/2008  %h hex ascii for macros
  ' 05:55 06/11/2008  split off o2sem.bas
  '
  'o2 asm
  '
  ' 14:23 01/04/2008
  ' 22:47 15/04/2008 to SSE4
  ' 04:25 23/04/2008 fix hexadecimal literals. Local #variable overrides
  ' 03:44 30/04/2008 softcoding + hash lookup
  ' 12:59 19/09/2008 multi exit: exit 1 2 ..9 also jmp fwd
  ' 12:06 14/11/2008 correction to imul operands
  '
  'o2 link
  '
  ' 08:11 25/Mar/2008
  ' 08:09 06/April/2008 resolve with complete label name
  ' 10:13 24/April/2008 support backward references
  ' 16:39 04/06/2008 structures variables,arrays data & macro % params ($ removed)
  ' 20:14 24/06/2008 symbol pair macros // ++ etc
  ' 11:36 29/06/2008 macro names containing several words and symbols `:)` `:D` `++` `old harry` etc
  ' 05:07 10/08/2008 /hexl /+hexl set address (offset from start of string)
  ' 11:29 19/09/2008 multi exit x2 x3 .. x9
  ' 16:08 06/10/2009 GE GG address offsets and bit setting,

  '-------------------------------------------------------------------------------------------


