I used the tricks exposed in issues #12 and #14 of Sinclair Computer, appeared in Italy between April and June 1985.
The result was satisfying since then I coded (directly in Forth) the new words that now allow random read-write access to every ½KB block of a prepared cartridge. The cartridge preparation consists in creating a normal print file via OPEN# Basic command to fill the whole cartridge. Then, leaving OPEN#ed the stream from Basic, I am able to cheat on the channel system variables and microdrive-map to let the magic happen.
I chose ½KB as the size of a block for two reasons: first this is the size of a sector so calulations was very easy, and secondly, the ZX Spectrum screen can show a whole block without scrolling.
In the following years, I continued improving this Forth environment adding many features and utilities that involved microdrives and RS-232 serial port, but due to the fragility of the keyboard, I had to move to an emulator that supported the ZX Interface1 and Microdrives (I admit there are only two or three emulators out there that support them).
The good news is that with an emulator you are allowed to binary-hack the cartridge file to squeeze it and reach the maximum theoretical number of blocks - 254 - since on a real cartridges only as few as 170-172 are available for certain. And... since you can have eight emulated Microdrives fitted a huge 1016KB of room is reached. See my mdr-cruncher utility for some useful details.
TAP2BLK.TAP is a tape that contains a Program and four Character array file that to be used to fill the blocks of your first cartridge. At the end of the same .TAP file there is the "reverse" program, the one I used to write the four Character Arrays. You can create a real (or emulated) cartridge by playing it on a real (or emulated) hardware (Specccy+Microdrive).
For completeness, I cannot not mention the site I built on Geocities... that I sadly left behind on 2002.
VFORTH12.TAP : the smallest Forth environment.
FORTH1.MDR: the 254 blocks library Microdrive cartridge
TAP2BLK.TAP: the tape to fill a real cartridge from scratch
VFORTH13.TAP : a Forth environment with SYS64 option enabled.
Once upon a time... in spring of 1990, I had the chance to work for a couple of months on a Sinclair ZX Spectrum 48K equipped with a Microdrive. Among the other things, I succeeded to disassemble an reassemble the machine code of a Forth for Spectrum (the famous White Lightning of the Oasis Software). My purpose was to make effective the use of the Microdrive within the Forth environment.
VFORTH12.TAP is a tape that contains a Basic starter that lowers the RAMTOP and allows the load of Forth code. A second short Basic program works as host for the opened channel so you can re-enter to Forth environment just giving RUN: this programs needs the a prepared cartridge like FORTH1.MDR or the one you've just prepared using TAP2BLK.TAP.
This is the first working version I coded and later published on Geocities.
This version has some known bugs that oblige me to give 200 LOAD every time I COLD start.
One of the most important patches done by that procedure is changing the ' tick word to make it return CFA instead of PFA: I understand this is a very technical talk, but that is: changing the behaviour of the ' tick word means change the core of the Forth interpreter.
VFORTH13.TAP is a tape that contains the natural evolution of VFORTH12.TAP with many options already loaded, but much more memory used. In particular, I decided to sacrifice the four top buffers to provide room for Ron Seniscal's SYS64... well, I patched it to the version working with the Interface1 fitted in: you can give SYS64 to turn to 64 columns mode or SYS32 to turn back to 32 columns mode.
This version is now deprecated, from the moment I succeeded in self-compile a new Forth version.