I’ve just completed the updates to 1.1 which includes the following:
- Improved and simplified engine
- String and numeric variable datatypes
- Improved and additional XOJO wrappers
- Memory reduction by reducing duplicate constants to a single stack location
- Constants and variables data table
- Improved bounds update to include constant and variable data
- Clean up of bit codes
- Many documentation changes
My other thought is if I leave the engine unlocked, so people can view it as this seemed to be an issue for some, can I call it open source but still license it as donation ware? I’d still like to be the maintainer of the engine code and would like any suggestions for changes to be directed to myself. Is this possibly or do I still need to keep it locked?
Anyway the only changes in Version 1.1 that would stop version 1.0 code from running is reset_ALE no longer requires a parameter, and performing a bounds update in your asm code is now a mov 0,eax rather than a 4. From now on I don’t plan on making any further language changes which would stop previous version code from running.
Here is a sample of version 1.1 code I’ve been using for testing:
lbl "_start:" var_ "inString", S, "Hello World" var_ "outString", S, "" var_ "memPointer", N, 0 call_ "writeString" call_ "upperCaseString" call_ "readString" call_ "deallocateExtraStack" mov 1,eax //Exit the program int lbl "writeString" mov "inString", ebx mov 4, eax int ret lbl "readString" mov "outString", ebx //Move the string location to ebx mov esi, edx //move the total stack to edx inc edx //increment the starting point by one mov 3, eax //call for a stack read int ret lbl "deallocateExtraStack" cmp esi, esp //get the total number of extra stack items to remove, after the variables mov eax, ecx //place the total in ECX the loop counter lbl "deallocateLoopStart" pop //remove the last item off the stack loop_ "deallocateLoopStart" mov 0,eax //do a bounds update as we've made major changes to the stack int ret lbl "upperCaseString" cmp esi, esp //get the total number of extra items on the stack to Uppercase mov eax, ecx //place the total in ECX the loop counter mov esp, "memPointer" //Move the upper stack location into our memory pointer lbl "upperCaseLoopStart" cmp 97, "[memPointer]" //check to see if the value in the pointer is in the correct range jl "notLowerCase" cmp 122, "[memPointer]" jg "notlowercase" //decrease the value in pointer R1 by 32 sub_ 32, "[memPointer]" lbl "notLowerCase" dec "memPointer" loop_ "upperCaseLoopStart" ret writeStringVariable_ALE("inString", tfLowerCaseString.Text) //Run the engine after all code sent run_ALE("_start:") tfUpperCaseString.Text = readStringVariable_ALE("outString")
I hope you’ve all had a great day…