diff --git a/Programs/CosmOS/Assembler/source.asm b/Programs/CosmOS/Assembler/source.asm index bc64c54..8993e7b 100644 --- a/Programs/CosmOS/Assembler/source.asm +++ b/Programs/CosmOS/Assembler/source.asm @@ -244,6 +244,26 @@ srcIncludeSkip: RET srcIncludeGone: + ; ---- Say which one ---- + ; + ; It said nothing at all, and the assembler's catch-all then said "nothing was written" - + ; which is true and useless. Three programs on the disk could be read and not assembled, + ; and finding out why meant reading the assembler rather than the message. + ; + ; SrcName holds the library path by now, because that was the second place tried, so this + ; says where it looked as well as what for. Both are worth having: a name that is not in + ; /Lib and not beside you is usually one or the other spelt wrong. + SETD.0 GoneText + SWI osPrintString + SETD.0 IncWanted + SWI osPrintString + SETD.0 GoneWhereText + SWI osPrintString + SETD.0 SrcName + SWI osPrintString + SETD.0 GoneEndText + SWI osPrintString + ; The file is not there. The stack is left as it is: the caller stops the assembly, and ; unwinding for the sake of tidiness would only hide where it happened. RSTA @@ -596,6 +616,13 @@ IncSlot: IncSlotLeft: 0x00 +GoneText: +"cannot find " +GoneWhereText: +", not beside the file that asked and not as " +GoneEndText: +" +" TooDeepText: "included files are nested deeper than this assembler will follow " diff --git a/Programs/makefile b/Programs/makefile index 200510a..06b8f14 100644 --- a/Programs/makefile +++ b/Programs/makefile @@ -129,6 +129,13 @@ cosmos: $(COSMOS) $(APPS) $(NATIVE_ASM) # 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. +# ---- And on the recipe that lays it out ---- +# +# Changing HOW the disk is built has to rebuild the disk. It did not, so adding the libraries +# to /Lib left an image that had been made without them, and the next run said the same thing +# was still missing - which sends you looking at the change you just made rather than at the +# stale thing in front of you. +$(COSMOS_DISK): makefile $(COSMOS_DISK): $(APPS) $(NATIVE_ASM) $(COSMOS) $(STAGE2) testPrograms/stringKeyword.asm \ $(wildcard CosmOS/Apps/*.asm) \ $(wildcard CosmOS/Source/*.asm) $(wildcard CosmOS/Assembler/*.asm) @@ -190,6 +197,14 @@ $(COSMOS_DISK): $(APPS) $(NATIVE_ASM) $(COSMOS) $(STAGE2) testPrograms/stringKey @# with a name longer than a directory entry holds is refused rather than skipped: a @# disk quietly missing a file is the failure a mirror exists to prevent. $(DISKTOOL) mirror $@ . /Source build + @# ---- And the libraries proper ---- + @# + @# Programs/Libraries is what an #Include means when it is not a CosmOS source: print, + @# the integer helpers, the maths. They were never here, because /Lib was a hand-written + @# list and nobody thought of them - so Sieve-16.asm, Life.asm and Fib-16.asm could be + @# read on the machine and not assembled on it, and the assembler said only "nothing was + @# written". Mirrored, so that the next one nobody thinks of is here anyway. + $(DISKTOOL) mirror $@ Libraries /Lib @for f in CosmOS/Source/console.asm CosmOS/Source/fileStream.asm \ CosmOS/Source/sbfs.asm CosmOS/Source/services.asm CosmOS/Source/text.asm \ CosmOS/Source/config.asm \