From f4fb56606e19673de7db8720eeabdb06d104e5b8 Mon Sep 17 00:00:00 2001 From: Anachronaut Date: Mon, 24 Aug 2026 18:31:55 -0400 Subject: [PATCH] Give the demo disk room for names, not just for bytes The demo disk had eight directory blocks, which is sixty four names, and thirty nine of them were already spoken for. Its two ceilings were nowhere near each other: the average file on it is twenty six blocks, so sixty four names run out with the disk forty one per cent full. Names were going to be gone long before space was, and space is what a disk is usually short of. Twenty four blocks is one hundred and ninety two names. The difference costs sixteen blocks of four thousand and ninety six, three tenths of one per cent, and the superblock has carried this number per disk since the format was written - so nothing but the makefile line knows or cares what it is. This is provisioning and not format. Directories, when they arrive, will not relieve this pressure; under the settled design they add to it, because a directory spends an entry of its own. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW --- Programs/makefile | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Programs/makefile b/Programs/makefile index 22450bb..dfcc213 100644 --- a/Programs/makefile +++ b/Programs/makefile @@ -100,13 +100,24 @@ cosmos: $(COSMOS) $(APPS) $(NATIVE_ASM) # Made from scratch every time, so that what is on it is what is in Apps/ now and not # also whatever used to be. +# +# TWENTY FOUR DIRECTORY BLOCKS, WHICH IS ONE HUNDRED AND NINETY TWO NAMES. It was eight, +# and that is sixty four, of which thirty nine were already spoken for. The two ceilings a +# disk has were nowhere near each other: at the average file on here, twenty six blocks, +# sixty four names run out with the disk forty one per cent full. Names were going to be +# gone long before space was. +# +# A directory block is 256 bytes and holds eight entries, so the difference costs sixteen +# blocks of four thousand and ninety six - three tenths of one per cent - to buy a hundred +# and twenty eight more names. The superblock has carried this number per disk since the +# format was written, so nothing but this line knows what it is. $(COSMOS_DISK): $(APPS) $(NATIVE_ASM) testPrograms/stringKeyword.asm \ CosmOS/Apps/hello.asm CosmOS/Apps/Say.asm CosmOS/Apps/Keys.asm \ CosmOS/Source/services.asm CosmOS/Source/console.asm \ $(wildcard CosmOS/Source/*.asm) $(wildcard CosmOS/Assembler/*.asm) @mkdir -p $(@D) rm -f $@ - $(DISKTOOL) format $@ 4096 8 + $(DISKTOOL) format $@ 4096 24 @for app in $(APPS); do $(DISKTOOL) put $@ $$app; done $(DISKTOOL) put $@ $(NATIVE_ASM) @# SOURCE goes on as well, because an assembler with nothing to assemble is a