agon-mos icon indicating copy to clipboard operation
agon-mos copied to clipboard

Tab completion and OSCLI-safe local/global loading and execution of non-MOSlet .bins

Open HeathenUK opened this issue 2 years ago • 0 comments

This adds:

  • Tab completion for paths/filenames and commands.
  • Automatic loading and execution of non-MOSlet .bin files either from a global location (/bin/) or from within the current working directory, i.e. as for MOSlets, enter "binaryname" and if binaryname.bin is either in /bin/ or in the current working directory, it will be loaded and run.

This is particularly necessary now that we are getting to the point where it's simply impossible to fit some code in MOSlet space, such as Sijnstra's excellent gunzip utility.

There are guard rails to prevent invocation of non-MOSlets from OSCLI (and therefore from within BASIC etc.) which will work for any Agon app that uses this function, preventing a user trashing running code and working RAM.

The priority order for tab resolution/execution in both cases is: built in commands, MOSlets (in /mos/), global (/bin/) .bin files, and finally .bin files in the current working directory.

The designs of these two features are necessarily interdependent with one another because of the assumptions you need to make in code, hence one PR for both otherwise unrelated features.

This is mutually exclusive with the two other PRs (now closed) for local and global non-MOSlet bin loading execution and tab completion.

HeathenUK avatar Jan 22 '24 08:01 HeathenUK