HEPAX RAM blocksEdit
Equipment = HP41CX with NoV-64 and HEPAX file system in blocks 8, 9, A and B. ICEBOX in C and CCD OS/X in D. Blocks E and F open for plugin modules in port 4.
I discovered two days ago that although I could do Cat 9 and Cat A and run the programs in that part of HEPAX memory, these programs would not show up in HEPDIR. I discovered this as I was trying to purge one program residing in HEPAX memory in block 9 and the operation errored and told me it could not find the file. HEPDIR would show programs in block 8 and B only. Blocks 9 and A was left out of the chain.
I consulted the HEPAX manual and found the way to remove a block from the HEPAX chain. It says to write h300 to address xFF3 and h000 to xFE7 and xFE8. If the block is part of the HEPAX file system, the address xFF3 should contain h200. In my broken chain of HEPAX blocks all these addresses (8FF3, 9FF3, AFF3 and BFF3) contained h200 as it should - presumably to indicate the block is a HEPAX block.
This must be known somewhere, but I just couldn't find it: The addresses xFE7 and xFE8 does the actual chaining of the HEPAX file system. The address xFE7 shows the previous block in the HEPAX chain while xFE8 shows the next block. The first block in the chain will have xFE7 contain h000 and the last block will have h000 in the address xFE8.
In my HEPAX file chain, the addresses would be like this:
8FE7 = h000
8FE8 = h009
9FE7 = h008
9FE8 = h00A
AFE7 = h009
AFE8 = h00B
BFE7 = h00A
BFE8 = h000
Needless to say my broken HEPAX chain had different values at these addresse, stringing blocks 8 and B together while leaving blocks 9 and A in limbo. Block 8 had h000 and h00B while block B had h008 and h000. How this happened I don't know. I would suspect a HEPAX bug.
This also shows how it is possible to use blocks in the middle of the HEPAX chain for other purposes. It also show how you can protect a HEPAX block from having programs in there deleted - simply by leaving that block out of the chain.