Add run-voyager, and make running depend on the disk
The jitter was a stale disk. An image built before the escape sequences came out still had the old Snake on it, which sends ESC [ H every frame: the console swallows the escape, because it is below the font's first character, and then draws "[H" as two ordinary letters. So every frame began two characters to the right and one line further down than the last, and the board walked down the screen. Not timing at all. WHAT IS ON A DISK IS WHATEVER WAS BUILT WHEN THE DISK WAS MADE, and a machine whose console has changed will start that image quite happily. That is the compatibility break we chose when the parser came out, and it is fine - but it should not be a puzzle, so both run targets depend on the disk rather than merely using it, and both READMEs say why. run-voyager boots the same disk on the machine with a screen. It existed only as EMU=../Voyager in front of run-cosmos, which is not a thing anybody should have to know. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW
This commit is contained in:
co-authored by
Claude Opus 5
parent
310804e267
commit
761c11a66b
@@ -75,6 +75,18 @@ To boot CosmOS with that disk attached:
|
||||
make run-cosmos
|
||||
```
|
||||
|
||||
Or on the Voyager, which is the same machine with a screen and a speaker instead of a
|
||||
terminal:
|
||||
|
||||
```sh
|
||||
make run-voyager
|
||||
```
|
||||
|
||||
Both depend on the disk rather than merely using it, which is worth knowing: **what is on a
|
||||
disk is whatever was built when the disk was made.** A machine whose console has changed
|
||||
will start an old image quite happily and its programs will draw whatever the old way now
|
||||
means, which is a confusing thing to debug and an easy thing to avoid.
|
||||
|
||||
The generated files are kept under `Programs/build/`:
|
||||
|
||||
- `CosmOS/Source/cosmos.bin` is the bootable CosmOS image.
|
||||
|
||||
+18
-1
@@ -69,6 +69,7 @@ run-%:
|
||||
# make cosmos Assemble the system and everything it can load.
|
||||
# make cosmos-disk ... and put the loadable programs on a disk image.
|
||||
# make run-cosmos ... and boot the machine with that disk in the drive.
|
||||
# make run-voyager ... and boot the machine that has a screen instead of a terminal.
|
||||
#
|
||||
# Programs in Apps/ say where they live with #Base, so the assembler writes them out as
|
||||
# loadable programs rather than as boot images. They are named .sbx to keep that
|
||||
@@ -220,6 +221,22 @@ run-cosmos: $(COSMOS_DISK)
|
||||
run-cosmos-direct: $(COSMOS) $(COSMOS_DISK)
|
||||
$(EMU) --disk $(COSMOS_DISK) $(COSMOS)
|
||||
|
||||
# ---- The same disk, on the machine with a screen ----
|
||||
#
|
||||
# Voyager rather than SplitBit, which is the only difference: same disk, same system, same
|
||||
# programs, presented through a window instead of a terminal.
|
||||
#
|
||||
# IT DEPENDS ON THE DISK, and that matters more than it looks. What is on a disk is whatever
|
||||
# was built when the disk was made, so a machine whose console has changed will happily boot
|
||||
# an image full of programs written for the old one - and they will draw whatever the old
|
||||
# way now means. Making the disk a dependency of running it is what stops that being a
|
||||
# puzzle.
|
||||
run-voyager: $(COSMOS_DISK)
|
||||
../Voyager --disk $(COSMOS_DISK)
|
||||
|
||||
run-voyager-direct: $(COSMOS) $(COSMOS_DISK)
|
||||
../Voyager --disk $(COSMOS_DISK) $(COSMOS)
|
||||
|
||||
clean:
|
||||
rm -rf $(BUILD)
|
||||
|
||||
@@ -227,4 +244,4 @@ clean:
|
||||
# reassembles every program that includes it.
|
||||
-include $(DEPENDENCIES)
|
||||
|
||||
.PHONY: all clean cosmos cosmos-disk run-cosmos run-cosmos-direct
|
||||
.PHONY: all clean cosmos cosmos-disk run-cosmos run-cosmos-direct run-voyager run-voyager-direct
|
||||
|
||||
@@ -104,6 +104,12 @@ make run-cosmos
|
||||
|
||||
Then `dir` to see what is there, `load Snake.sbx` and `run` to play something, or `load Asm.sbx` and `run cosmos.asm` to watch the machine build itself.
|
||||
|
||||
`make run-voyager` boots the same disk on the machine with a screen instead of a terminal.
|
||||
Both targets depend on the disk, so a disk built before a change to the machine is rebuilt
|
||||
rather than booted as it stands: **what is on a disk is whatever was built when the disk was
|
||||
made**, and a system whose console has changed will happily start an image full of programs
|
||||
written for the old one.
|
||||
|
||||
## Running Programs: SplitBit
|
||||
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user