Hello.
The diaries will contains news, time to time, about the development of Grimoire.
For this 1st diary, I will share you all the news from a long time up to today about what I did for the project.
it’s is a long reading article that should be read from bottom to top as newer are at top and older at the bottom .
; ************************************************
2022.05.15-16 - Various updates
Updated OpenScreen to save correctly Bitplanes adresses in ScAllocPhysic & ScPhysic registers
; ************************************************
2022.05.09-15 - Various updates
Work in progress on OpenScreen ( & OpenScreenEx )
Added logDebugMessage to Reporter.log
Added logDirectString to Reporter.log
Added debugMode parameter to enable/disable logDebugMessage outputs to CLI
All tested OK.
; ************************************************
2022.05.09-11 - Various updates
Updated getScreenExists to be compatible for calls from OpenScreenSAGA(Ex)
Renamed OpenScreenSAGA to OpenScreenSAGAEx ( 5 parameters, ID, Width, Height, Depth, Mode )
Added OpenScreenSAGA ( 4 parameters ID, Width, Height, BestModeID( = Depth + Mode ) )
Work in progress on OpenScreenSAGAEx
Added seMultiPushToStack to push multiple variables to stack (without type control)
Updated/Fixed getBestScreenModeEx to work properly for SagaC2P Screen mode requests.
Added ScreensFullSaga.library setup in core.lib
Added macros for getBestScreenMode & OpenScreen
; ************************************************
2022.05.06 - Updated System/grimoire-coldStart.gs
Pushed GRMIncludes/grimoire-coldStart.asm/grimoireStartupSequence inside System/grimoire-coldStart.gs
Pushed GRMIncludes/grimoire-coldStart.asm/grimoireLeaveEngine inside System/grimoire-coldStart.gs
Fixed 2022.05.04 updated.
Everything tested/ran : OK
; ************************************************
2022.05.04 - Stack System Update
Update coreLib.asm to include 2 new calls for Stack : seLoadStackA3, seSaveA3Stack -> grmSeLoadStackA3, grmSeSaveA3Stack
Update CoreLib/coreLib_stack.Asm to include seLoadStackA3 & seSaveA3Stack for stack load/save into/from a3 (restore a3)
Update grimoire-structure.asm to include 2 new grmCoreCalls : grmSeLoadStackA3 & grmSeSaveA3Stack
Updated grimoire-stackSystem.Asm functions sePushToStack, seGetFromStack, seGetMultiFromStack and seGetFromStackP to use new core Stack functions.
Updated coreLib.asm to include 1 new call for Stack seResetStack -> grmSeResetStack (to use with care)
Update grimoire-structure.asm to include 1 new grmCoreCalls : grmSeResetStack
; ************************************************
2022.04.26 - added new sample : configurationChecking.exe
Updated source code compilation for buildCORE (libraries) & build (executables)
Added ScreensAGA/getScreenExists() method.
; ************************************************
2022.04.08 - added new sample : configurationChecking.exe
Added new code source sample configurationChecking.asm to show current configuration.
; ************************************************
2022.04.07 : Update grimoire-hardwareDetector.library :
Fixed error in grimoire-hardwaredetector.library setup
; ************************************************
2022.04.04 : Update grimoire-hardwareDetector.library :
Now detects all CPUs from 68000, 68010, 68020, 68030, 68040, 68060 and Vampire’s 68080
Now Detects all FPUs from 68881, 68882, 68040, 68060 and Vampire’s 68080
Now Detects ECS/OCS, AGA, Vampire’s V2 Chunky mode, and Vampire’s V4 Super AGA ( + Chunky + PIP )
HardwareDetector now integrated in the grimoire-core.library startup to push datas inside internal structure.
; ************************************************
2022.04.02 : Revert to 2022.03.28 Push 1, actions :
Restored grimoire-stacksystem.asm/sePushToStack, seGetFromStack/seGetFromStackP & seResetStack out of grimoire-core.library
Restored grimoire-procedures.asm/loadProcParams, pushVarToStack & getProcedureReturn out of grimoire-core.library
; ************************************************
2022.03.28 : Push more into .library files
Pushed grimoire-vms.globals.asm/buildGlobalVariables & DeleteGlobal into grimoire-core.library
Pushed grimoire-vms.locals.asm/buildLocalVariables & DeleteLocal into grimoire-core.library
Pushed grimoire-basics.asm/buildAllLoopsBuffer & deleteAllLoopsBuffer into grimoire-core.library
Pushed grimoire-stacksystem.asm/sePushToStack, seGetFromStack/seGetFromStackP & seResetStack into grimoire-core.library
Pushed grimoire-procedures.asm/loadProcParams, pushVarToStack & getProcedureReturn into grimoire-core.library
; ************************************************
2022.03.27 : Prepare to push more to .library files
Updated grimoire-vms.locals.asm/buildLocalDatas & DeleteLocal to be compatible to .library format.
Updated grimoire-vms.globals.asm/buildGlobalVariables & DeleteGlobal to be compatible to .library format.
; ************************************************
2022.03.26 : Grimoire Startup Sequence - Internal updates
Main setup/configuration uses grimoire-core.library
Pushed Math FFP Conversion functions inside grimoire-fpconvert.library
Macros uses grimoire-macros.gs (not yet working)
Includes AmigaOS/execLib.asm memory allocation functions inside the grimoire-core.library
Includes Dos library open/close inside coreLib grimoire-Core.library
Updated startup to open libraries including grimoire-fpconvert.library
Moved MACROS sources codes files inside SYSTEM/ and relabelled starting with grimoire-
Compilation test : Working
; ************************************************
2022.03.25 : Headers & Macros system setup
Continued to rebuild entirely the system to use .library files for systems/internal functions & .gs for MACROS
Rebuilded 80% of the engine to use .library files instead of direct code.
Started preparation of the macros to be set in a .gs file.
; ************************************************
2022.03.24 : Headers & Macros system setup
Update many sub programs to become MACROS to be included in the "GrimoireMCS.gs" file.
; ************************************************
2022.02.27 : BasicGOSUB & BasicRETURN
Added support for full BasicGOSUB/BasicRETURN macros.
Added support for BasicGOTO macro
BasicRETURN cast an error when reach without BasicGOSUB call
; ************************************************
2022.02.22 : BasicWHILE & BasicENDWHILE
Started support for BasicWHILE Macro
; ************************************************
2022.02.20 : BasicFOR & BasicNEXT
Updated buffer creation/deletion to use the correct for/next position for cumulatives for/next loop.
; ************************************************
2021.07.04 : BasicFOR & BasicNEXT
Improved BasicFOR/NEXT with multiple imbrications schemes.
; ************************************************
2021.07.02 : BasicINC & BasicDEC
Fixed BasicFOR/NEXT negative step situation.
; ************************************************
2021.07.01 : BasicINC & BasicDEC
Added BasicINC VAR,(Optional Variable/directValue)
Added BasicDEC VAR,(Optional Variable/directValue)
; ************************************************
2021.06.30 : Procedure update
Added getProcedureReturn support : Completed
Added configuration equate fullErrorMessages for full or minimal error messages.
Added Basic Language for/next commands under BasicFOR VARIABLE,START,END,(STEP) & BasicNEXT macros names.
Updated example to show all the capabilities (global & local variables, procedures, for/next, etc.)
; ************************************************
2021.06.29 : Procedure update
Added Procedure Parameters creation : Completed
Added CallProcedure Parameters cast to the Stack : Completed
Added Procedure reading parameters from the Stack : Complete
TO DO : getProcedureReturn value in a variable.
; ************************************************
2021.06.25 : Procedure update
Added procedure call parameters push to the stack
Added procedure parameter pull from the stack
; ************************************************
2021.05.27 : Restart of the project
Added configuration file seConfiguration.asm
Added equate seConfiguration.asm/seVariablesBuffer for global/local variable buffer size setup.
Added vms.Globals.asm with 2 methods : buildGlobalVariables & DeleteGlobal
; ************************************************
2020.10.23 : seProcedure Update
Updated seProcedures.asm/Procedure to handle up to 16 parameters (8 before)
Updated seProcedures.asm/callProcedure to handle up to 16 parameters (8 before)
Updated seProcedures.asm/loadParams to handle the size of local variable buffer header size (next,prev,size)
Updated seProcedures.asm/EndProcedure to handle 3 cases (Return direct value, local variable or global variable)
; ************************************************
2020.10.22 : SetString fix
Fixed SetString to be useable even when no static String is defined.
> Working on EndProcedure method and the one to get the variable from the EndProcedure.
; ************************************************
2020.03.03-20 : Procedure and Jumps improvements
Fixed callProcedure parameters sendings and Procedure parameters receiving.
put all goto, gosub, label and Return in a specifi file
updated Return to handle both simple gosub returns, and procedures ones
updated Return to handle the return of a variable/value
; ************************************************
2020.03.03-10-11 :
Fixed an issue in the setLocalFloat MACRO
Updated system to create a big buffer that should contain both global + local + potentiel local recursive copies variables
Updated Global Variables structure to use the big buffer
Updated local variables chained list to use the big buffer too.
Global variables are working : OK
Local variables are working : OK
Local buffer release also clear the buffer content to be sure no trash data will be available if a new variable buffer is set.
Procedure/Function with parameter don’t crash, but parameters use causes crash. -> Must be fixed.
; ************************************************
2020.03.03-08 : Startup & Procedures updates/improvements
Added Stack creation/delete methods integrated to the coldStart and HotEnd methods.
Now, procedure that does not own parameters can be called and works perfectly
fixed loadParams crash with no parameter on procedure.
; ************************************************
2020.03.03-07 : parserVariables and global Data Structure Creation Update/Improvement.
fixed a bug in the System, global and local Variable creation
Updated AddGlobalStringVariable as String with spaces cannot be handled correctly by MACRO system.
Updated addLocIntVariable, addLocFloatVariable and addLocStringVariable to works like Global Variables creation.
fixed seInternalStructures.s handling of Internal Data Structure size and position.
Extensions fichiers Source Engine .s changés en .asm pour l’highlight de la syntaxe 68000 sous Sublime Text
Added [dos/intuition/graphics/mathffp].library error messages when engine cannot open one of them.
Added error messages for exec Alloc/Release memory fast methods.
Added checking on Error casting to be sure ID is in the range for predefined String outputs.
fixed parserVariables.s setup/closure that now works correctly
fixed mathFFPLib.asm/ConvertStrToFlt method to correctly create a floating number from a static String.
Manages to allow 2 string creation modes for data. 1 with direct Static string in the MACRO, and 1 with indirect static String
Uses dos.library/PutStr command to output logs until I found solution to have dos.library/Output to not trash memory.
relabeled some ParserVariables.asm MACROS to makes them more easy of use even in a direct "Source Engine" use from Assembler
fixed issue in the parserVariables.asm buildLocalDatas and DeleteLocal MACROS concerning multi-depth-level of procedures/functions calls imbrication
Improved procedure/Function system to automatically handle local variables data creation/deleting. Only the variables should be inserted inside a procedure
Procedures/Functions with 0 to 8 parameters can now be created.
callProcedure can handle from 0 to 8 parameters.
; ************************************************
2020.02.29 : parserVariables and global Data Structure Creation Update/Improvement.
fixed buildGlobalDatas to not allocate memory when no global datas is set.
added dos.library Open/Close in the setup process
added seString.s file with string evaluation
added seReporter.s for debug & messages output to CLI
Run compilation with testing of all current developed components : OK
Run with Add integer, float and String variables : OK
; ************************************************
2020.02.28 : parserVariables and global Data Structure Creation
Updated parserVariables.s/buildGlobalDatas to detect already allocated global datas and cast Error
New compilation test under Devpac3
Fixed seErrorHandler.s errors with forgotten "bsr" for subroutines calls.
Fixed several errors in AmigaOS/MathFFPLib.s
Fixed minor errors in various files
Compilation OK under Devpac with all currently defined files.
; ************************************************
2020.02.25 : parserVariables and global Data Structure Creation
parserVariables.s cleaned up. Removed doc and pushed it into another file.
parser_CreateGlobalData.txt documentation file created for the parserVariables.s use and completed with examples.
header_coldStart.s update to include parserGlobalVariables.s file that should be created by the Parser, even empty.
gameEngine.s update to include parserGlobalStrings.s file that should be created by the Parser, even empty.
; ************************************************
2020.02.16 : parserVariables security improvements.
parserVariables.s : Added "EndProcedure" methods that return static Integer, Float number or String.
; ************************************************
2020.02.14 : parserVariables security improvements.
parserVariables.s : Added support for Return to be used from inside a procedure or function (like in Java)
parserVariables.s : Updated "EndProcedure" and "Return" (from procedure) to automatically delete current local variable.
; ************************************************
2020.02.13 : parserVariables security improvements.
parserVariables.s : Security added to avoid too many "Return" called without preceding "Gosub" (castError)
parserVariables.s : Security added to avoid too many "EndProcedure" reached without preceding "Procedure" startup (castError)
parserVariables.s : Security added to prevent from using Goto and Gosub to call a procedure/Function (castError)
parserVariables.s : Security added to prevent labels from being called from a procedure (castError)
parserVariables.s : Security added to block uses of Gosub from inside a Procedure/Function (castError)
parserVariables.s : Security added to block uses of Goto from inside a Procedure/Function (castError)
parserVariables.s : Security added to prevent from calling more than 16384 ’procedure’/’function’ without ’EndProcedure’/’EndFunction’
parserVariables.s : Security added to prevent from doing more than 16384 ’Gosub’ without ’Return’s
seErrorHandler.s : Error messages added for parserVariables.s security checkings.
seInternalStructure.s : Added variables procedureDepth.w and gosubDepth.w for parserVariables.s security checkings counters
; ************************************************
2020.02.12 :
parserVariables.s : Added and separated local and global variables creation.
parserVariables.s : Added documentation on how to setup global and local variables.
parserVariables.s : Added "Procedure", "Function" and labels definition MACROS
parserVariables.s : Added "EndProcedure" or "EndFunction" definitions MACROS
parserVariables.s : Added simple "goto" and "gosub" for Labels
parserVariables.s : Added simple "Return" from a label
parserVariables.s : Added simple "callProcedure" for Procedures and Functions
parserVariables.s : Added explanations on how to Setup a "Procedure" or "Function"
parserVariables.s : Added explanations on how to call a "Procedure" or "Function"
parserVariables.s : Added multi-depth local variables support using chained structures.
; ************************************************
2020.02.07-08 :
Builded the matthFFPLib methods & Macro
mathFFPLib : Added Stack methods ConvertFltToInt, ConvertIntToFlt, ConvertStrToFlt, ConvertStrToInt
mathFFPLib : Added Internal methods privConvertFltToInt, privConvertIntToFlt, privConvertStrToFlt and privConvertStrToInt
mathFFPLib : Methods ConvertStrToInt and privConvertStrToInt are compatible with Floats ans Integer stored in a String with output in Integer format
mathFFPLib : Methods ConvertStrToFlt and privConvertStrToFlot are compatible with Floats ans Integer stored in a String with output in Float format?
Working on the Rebuild of a simpler stack system as parser should send correct data type concerning direct data
And simple data structure (Data.l + DataType.w) should be enough in global/local variables to makes required
checking for conversion. Conversion of INT/FLT depending on required parameter in source engine method will be
added for local/global variables directly in the methods to push variables to stack.
Started improvement in Variables system separating the purely Parser method (parserVariables.s) to the Source Engine ones (seVariables.s)
seVariables.s rebuilded methods : sePushIntToLocal/GlobalVar, sePushFltToLocal/GlobalVar and sePushFltStrToLocalGlobalVar to try to automatically adapt input format to output
seErrorHandler.s updated to handle all errors that are required by the current developed methods and MACROs
Unfinished/Test files are in the TempFiles directory.
; ************************************************
2020.02.04-05 :
Updated Amiga OS 3.x SDK From https://github.com/deplinenoise/amiga-sdk version (with LVO)
Working on seStackSystem.s to optimise it and continue MACRO Development
; ************************************************
2020.01.31 :
gameEngine.s added label ParserStringArea for Static String input provided by the PARSER to the engine.
seStackSystem.s Restructurate list of MACROS for a better visibility. Now per variable type.
seStackSystem.s added : pushStaticIntegerToLocalVar, pushStaticIntegerToGlobalVar and pushStaticIntegerToVarA4
seInternalStructures.s modifier order for Screens, Copper, Datas to put bigger datas at end of structure
seStackSystem.s added [Internal] Macros : IsA4VariableInteger
; ************************************************
2020.01.31 :
Moved and improved createDeleteString method from seStackSystem.s to seStrings.s
Moved seInternalStructures.s methods AllocSys, LoadSysA5, FreeSys to seSetup.s
Moved Amiga System .library opening and closing to seSetup.s
Methods AllocSys, LoadSysA5, FreeSys and Library Open/Close changed as MACRO to avoir many Bsr calls at setup
Added typeMemBlock to seVariables.s file
seStackSystem.s : Added pushGlobalVarStringToStack to stack system
seStackSystem.s : Added Integer Macros pushStaticIngtegerToStack
seStackSystem.s : Added Integer Macros pushLocalVarIntegerToStack, pushGlobalVarIntegerToStack and InternalPushA4Integer
Optimised seStackSystem with new MACROS LoadGlobalVariableA4, LoadLocalVariableA4, LoadTempVarA4
Optimised seStackSystem with new MACROS InternalPushA4String and InternalPushA4Integer
seStackSystem.s : Added pushStaticStringToLocalVar, pushStaticStringToGlobalVar and internal one pushStaticStringToVarA4 MACROS
seStackSystem.s : Added prototypes [TODO] of the 13 remainings MACROS to add to the stack/parser system for variables support.
; ************************************************
2020.01.30 :
Added seErrorHandler.s file to handle error message through an Intuition Requester (unfinished)
Updated seStackSystem.s informations/details.
; ************************************************
2020.01.29 :
Added MathFFP.library setup and closure. Integration in header_coldStart.s done.
Fixed many sentences in currently integrated files.
Compilation under DEVPAC : Successful
Running gameEngine from NewCli : Successful
sourceEngine allocate memory (system) and free it successfully
sourceEngine open graphics, mathffp and intuition libraries correctly, and closes them at the end.
; ************************************************
2020.01.28 :
Modified directories structures and files location
Start working on execLib.s with MACRO & Memory functions
Start working on graphicsLib.s with OpenLibrary
Start working on intuitionLib.s with OpenLibrary
Start working on header_coldStart.s startup and release methods to call
Worked on seStackSystem.s : Local String MACROs for PARSER.
Updated header_coldStart.s to call library open methods
Updated gameEngine.s to integrate header_coldStart.s
Updated seInternalStructures.s with more datas
Files starting with ’ztemp_’ are not yet integrated in the engine. Temporar files.
Added sub-directory AmigaOS and put in execLib.s, graphicLib.s and intuitionLib.s
AmigaOS system libs integration is done in header_coldStart.s
; ************************************************
2020.01.27 :
Updated files contents and naming
Added sys_stackSystem.s that will be used to setup all Stack MACROS
Added sys_stackSystem.s/StrToStack(A0,d0) to send a string to the stack
Added sys_stackSystem.s/(a0,d0)=pullStrFromStack to get a string from the stack
Added seStrings.s for String methods
Added seString.s/getStringSize to evaluate a String size
Renamed to VariablesSystem_Macros.s the file to handle Source Engine variables system
fixed to VariablesSystem_Macros.s : seDataReset, addVariable, addArrVariable, endDatas
fixed to VariablesSystem_Macros.s : buildDatas, SaveAsLocal and SaveAsGlobal
added to VariablesSystem_Macros.s : DeleteLocal and DeleteGlobal
added to VariablesSystem_Macros.s : dPushToInt, dPushToFloat and dPushToString to push direct data (Parser) to local variables
+ Various updates.
; ************************************************
2020.01.26 :
var_Macross.s = Parset MACRO for variables support
syst_structures.s = Source Engine Amiga68k internal structures
seScreen.s = Source Engine methods for screen handling
header_coldStart.s = Source Engine source code for for Engine initializing
gameEngine.s = Source Engine source code for Stand Alone use (directly on Devpac3 or other)
Created a ParserPrinciple.txt file to explain how the parser can do the conversion/Emulation job.