8bit Projects For Everyone


Find   for  

MEMDISK

Is designed to store files in memory areas. The memory can be fragmented, so some I2C EEPROMs can be used as one disk. It is also useful for ramdisks in banked RAM or files stored in EPROM.

The MEM/0 structure was the first idea. In the MEM/1 revision, pointers to parent was added. So now there's only one pointer needed to operate a file or directory and there's no need to remember pointers of the path elements. This simplifies e.g. deleting files or moving to another directory.

Disk structure
shift contents length
in bytes
description
+0 "M", "E", "M", #01 4 filesystem name
+4 three chars followed by #00 4 phisical disk name
+8 structure F at least 26 file descriptor
+... structure D at least 26 directory descriptor
+... structure A at least 7 data area descriptor

First file desriptor (structure F) is always present. Points to first file or directory on disk, contains amount of useful free space and points to the free area chain (structures A). Also can point to parent directory - value 0 means the mount point is root. So empty disk contains the 8 bytes header, one structure F and at least one structure A.

Structures
shift length
in bytes
contents notes for
structure F
(file)
structure D
(directory)
structure A
(data area)
+0 4 pointer to next structure next file or directory in this directory only A
+4 2 length of this structure from 20 to 64 from 1 to 65535
+6 1 version number #00 #80 data area
+7 1 flags
+8 4 pointer to parent structure the directory that contains this file or directory
+12 4 parameter file length
+16 4 pointer to child structure only A first entry in child directory
+20 4 date and time packed
+24 at least 2 name followed by #00 file name directory name

All pointer and length fields are in little Endian (the low meanig byte is first).

Example - empty 8kB disk

Example device is M24C64 - an I2C 8kB EEPROM, connected to AY-3-8912.

The pointer base is #E0A0, what means memory connected to AY (#E0 - bit 0 of port A is the SDA, bit 1 is SCL.) and of internal number #A0. The connection number #E2 is used in TC2068 computerers and means bit 4 of port A is the SDA, bit 5 is SCL. Internal number for M24C64 chips can be range #A0..#AE (only even values) and is set with E0, E1 and E2 inputs of the chip.

addr.   contents     description
#0000   4D 45 4D 01  filesystem name "MEM/1"
#0004   45 45 30 00  disk phisical name "EE0" (zero ended)
#0008 F 00 00 00 00  no next directory entry (start of F struct.)
#000C   19 00        entry length (#0027-#000E)
#000E / 00 00        file entry with no flags set
#0010   00 00 00 00  no parent structure present
#0014   D3 1F 00 00  total free area length
#0018   27 00 A0 E0  pointer to A structure (starts from #0027)
#001C   B5 44 22 2C  time of formatting: 2002-01-02 08:37:42
#0020   45 45 44 48  disk name "EEDISK"
#0024 \ 53 4B 00     (zero ended)
#0027 A 00 00 00 00  no next structures (start of A struct.)
#002A   D3 1F        area length (#2000-#002D)
#002D / FF FF FF FF  empty area - #1FD3 bytes
#0031   FF ...
#1FFF \ FF           last byte of empty area


Tell other people:

Files for download

eedisk.zip 2.8kB (2002-12-20 21:08)
Example code to access the IIC memory in TC2068.

Links to other pages



See also

IIC memory
Memory connectable to IIC magistral.

E-mail:

Password:



Forgot password?

Register?
CP/M
CPM22QED
CPC
FutureOS
ParaDOS
SymbOS
CPM22QED
MB02
SAM Coupé
Spectravideo
Timex 2068
Timex FDD
YABUS.TF(3)
Filesystem
IDEDOS
Memdisk
MGT
BDOS
Master DOS
Timex
TOS A.2
TOS A.4
ZX Spectrum
Doors
ResiDOS
ZXVGS
ZXVGS
FlashD0
MB02
PL3MEM
Pentagon
TI-of-TTL
Unipolbrit
Warajevo
ZXATASP

If you see error on this page, describe here:

© 2009-12-28 21:50 Jarek Adamski, http://8bit.yarek.pl