"do build.sh cosmos.asm" looked for a file called "build.sh cosmos.asm", because scriptOpen copied the whole rest of the line into the name. So a script could be told nothing, and a launcher - a script whose entire job is to hand on what it was told - could not exist. Now the name is cut off the front and what follows is kept whole. $1 to $9 are the words of it, walked out on demand, and $args is all of them. Nothing is stored per parameter, so there is no limit on how many a script may be handed and no second number to keep in step. Both ways of starting a script pass them on: "do" and typing the name. A word that was not given is an error that stops the script, like every other name this shell does not know. Expanding it to nothing would let a command run with an argument missing and then report success, which is what stop-on-failure exists to prevent. $args is always set inside a script, empty if it was given nothing, so "if same $args" can be asked. ---- And the count that describes the block was already wrong ---- Found while adding a field to it. The state one script keeps for another is saved by a single copy of a fixed number of bytes, and that number was 71 against a block of 77: six bytes of line position had been added in the middle of it years after the count was written. So the tail of every saved script was never saved, and #quiet in a helper stayed behind in the script that called it - the opposite of what this file's own comment promises and the README documents. The unsaved line position turned out not to matter, because a loop keeps its own copy in the block record. Nothing said so. Three numbers describe this block and all three now say so in a comment, and cosmosScriptNest ends on a helper that goes quiet and a caller that must not stay that way. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
50 lines
1.8 KiB
Plaintext
50 lines
1.8 KiB
Plaintext
# Anchored to the repository root, all of them. Without the leading slash a pattern
|
|
# matches at any depth, so "Assembler" also ignored the Source/Assembler DIRECTORY - and a
|
|
# new source file added there would have been silently untracked.
|
|
/Tests/build/
|
|
/Programs/build/
|
|
/Object/
|
|
/Assembler
|
|
/SplitBit
|
|
/SplitDisk
|
|
/SplitLint
|
|
/Voyager
|
|
/SoundPatch
|
|
/TuneC
|
|
|
|
# A .score is written and a .tune is what TuneC makes of it, so a .tune is a build product
|
|
# the way a .sbx is. Not anchored: they turn up wherever somebody is composing.
|
|
*.tune
|
|
/CLAUDE.md
|
|
/claudeResume.sh
|
|
/codexResume.sh
|
|
|
|
# Python leaves these beside the test scripts.
|
|
__pycache__/
|
|
|
|
# Assembled programs. Every one of these is built by 'make' in Programs/ from a source
|
|
# file that is tracked, so committing them only creates a second answer to the question of
|
|
# what a program does - and the second answer goes stale silently. Nine of the ten that
|
|
# used to be here disagreed with their own source, including the operating system.
|
|
#
|
|
# Not anchored, because a .bin may be built anywhere a .asm lives.
|
|
*.bin
|
|
*.sbx
|
|
*.img
|
|
|
|
# Kate leaves these beside a file it has open.
|
|
.*.kate-swp
|
|
Source/Emulator/rom.c
|
|
|
|
# Other people's repositories, kept here to be read rather than to be built. soundThing is
|
|
# where the synthesizer comes from and Hatchet-GPU is where the font and the scroll register
|
|
# idea come from, and neither belongs to this one: they carry their own .git directories,
|
|
# their own build outputs and their own compiled binaries. What this repository takes from
|
|
# them gets vendored deliberately, with a note saying where it came from.
|
|
/External/
|
|
|
|
# The personal disk 'make run-voyager' puts in drive 1. Made on demand, never rebuilt, and
|
|
# not cleaned - it is the one place in here where something made ON the machine can live.
|
|
/Disks/
|
|
*.sym
|