Grimoire
The Software development <<Book of Magic>>

Home > The Devs. Diaries > Opening the diaries.

Opening the diaries.

Monday 16 May 2022, by AmiDARK

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.

SPIP | | Site Map | Follow site activity RSS 2.0
Graphic design (c) digitalnature under License GPL