howerj / ffs

Forth File System using the BLOCK word-set

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Simple Forth File System based upon the BLOCK word-set

This is a simple Forth block based file system. See the Forth file ffs.fth for more information including documentation.

The file system provides a word-set that allows a user to interact with a disk image like you would with a DOS based system.

This project works under https://gforth.org/ and also SUBLEQ eForth (see https://github.com/howerj/subleq).

Some quick notes and limitations:

  • Files consist of non-contiguous Forth Blocks.
  • Files still consist of Forth Blocks, so are multiples of 1024 bytes in size.
  • The maximum file system size is roughly 64MiB.
  • The maximum number of files per directory is 31.
  • The file system is reliant on the Forth Block word-set and should run on even the most spartan Forth system so long as it is present.
  • File names are limited to 16 bytes in size.
  • Some commands include; edit, exe, ls, rm, rmdir, mkdir, cd, pwd, tree, cp, rename, cat, hexdump, more, df, halt, fdisk, and stat.
  • Full file path parsing is not available and most commands operate only using the current working directory.
  • The file system is designed to run as a single user system, there is no locking and global variables are used.
  • Only one file system can be mounted at a time.
  • Many commands are block oriented instead of being byte oriented, for convenience.
  • There is no redundant FAT block data structure like in FAT-12/FAT-16/FAT-32.
  • Low memory usage: The file system uses kilobytes of data (and can be further reduced if features like editing are not required). A handful of variables and buffers are used, along with the Forth Block system (a Block System with a single buffer would work).

Examples

The following section contains a few examples of how to use the file system and associated commands. To run the SUBLEQ eForth examples you will need make and a C compiler installed and on your PATH.

GForth

An example session:

mkdir example
cd example
pwd
edit test.fth \ Start editor commands
+ .( FIRST BLOCK ) cr
    + .( FIRST BLOCK, SECOND LINE ) cr
n
+ .( SECOND BLOCK ) cr
s
q     \ Back to "DOS"
ls
exe test.fth
df
rm test.fth
ls

SUBLEQ eForth

To run the SUBLEQ eForth system you will need to type:

make disk

This will make a bootable disk image that will work with the SUBLEQ VM. It will take a while to do so.

Instead of saving to a file called ffs.fb the disk image disk.dec will be updated after exiting from the SUBLEQ VM cleanly.

The SUBLEQ VM File System can only allocate from a pool of about 61 blocks, there are special files that are created, such as [KERNEL] that allow file system access to the SUBLEQ eForth image.

References

About

Forth File System using the BLOCK word-set

License:MIT License


Languages

Language:Forth 94.1%Language:Shell 3.6%Language:Makefile 1.2%Language:C 1.2%