Put the application hello.asm on the disk, not the bare metal one
Both are called hello.asm and they are different programs: Programs/hello.asm
is the 1978-style boot image that writes straight to port 0x00 and HALTs,
and CosmOS/Apps/hello.asm is the loadable one that ends with SWI osExit.
The disk had the first, which assembles to a .bin the shell cannot load, so
watching it work meant taking the file off the disk afterwards.
Now it has the second, and the whole thing is two commands:
> load Asm.sbx
> run hello.asm
wrote hello.sbx: program 22, data 14, labels 3
> load hello.sbx
> run
Hello, World!
It writes over the hello.sbx the host tool put there, so what runs is the
machine's own work. Byte for byte identical to the C assembler's, as ever.
strings.asm stays as it is, and now earns its place by being the odd one
out: no #Include and no #Base, so it assembles to a boot image rather than
a loadable program and the difference between the two is visible on one
disk.
Tests/native.sh still builds the bare metal hello.asm, and should: it is the
only thing that checks the SPBT path end to end, including running what came
out.
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
c5e4ec3455
commit
04424a8917
+12
-8
@@ -84,23 +84,27 @@ cosmos: $(COSMOS) $(APPS) $(NATIVE_ASM)
|
|||||||
|
|
||||||
# Made from scratch every time, so that what is on it is what is in Apps/ now and not
|
# Made from scratch every time, so that what is on it is what is in Apps/ now and not
|
||||||
# also whatever used to be.
|
# also whatever used to be.
|
||||||
$(COSMOS_DISK): $(APPS) $(NATIVE_ASM) hello.asm testPrograms/stringKeyword.asm \
|
$(COSMOS_DISK): $(APPS) $(NATIVE_ASM) testPrograms/stringKeyword.asm \
|
||||||
CosmOS/Apps/Say.asm CosmOS/Source/services.asm
|
CosmOS/Apps/hello.asm CosmOS/Apps/Say.asm CosmOS/Source/services.asm
|
||||||
@mkdir -p $(@D)
|
@mkdir -p $(@D)
|
||||||
rm -f $@
|
rm -f $@
|
||||||
$(DISKTOOL) format $@ 2048 4
|
$(DISKTOOL) format $@ 2048 4
|
||||||
@for app in $(APPS); do $(DISKTOOL) put $@ $$app; done
|
@for app in $(APPS); do $(DISKTOOL) put $@ $$app; done
|
||||||
$(DISKTOOL) put $@ $(NATIVE_ASM)
|
$(DISKTOOL) put $@ $(NATIVE_ASM)
|
||||||
@# SOURCE goes on as well, because an assembler with nothing to assemble is a
|
@# SOURCE goes on as well, because an assembler with nothing to assemble is a
|
||||||
@# demonstration of nothing. hello.asm and strings.asm are boot images built from one
|
@# demonstration of nothing.
|
||||||
@# file; Say.asm is an application, which needs the include and the service names.
|
|
||||||
@#
|
@#
|
||||||
@# Assembling Say.asm writes Say.sbx over the one the host tool put there, so the
|
@# hello.asm and Say.asm are the APPLICATION versions, so each assembles to a .sbx
|
||||||
@# machine ends up running a program it built itself.
|
@# written straight over the one the host tool put there - which means the next
|
||||||
$(DISKTOOL) put $@ hello.asm
|
@# thing loaded is a program the machine built itself, in the same breath.
|
||||||
$(DISKTOOL) put $@ testPrograms/stringKeyword.asm strings.asm
|
@#
|
||||||
|
@# strings.asm is the odd one out on purpose: it has no #Include and no #Base, so it
|
||||||
|
@# comes out as a boot image rather than a loadable program, and the difference
|
||||||
|
@# between the two is visible on one disk.
|
||||||
|
$(DISKTOOL) put $@ CosmOS/Apps/hello.asm
|
||||||
$(DISKTOOL) put $@ CosmOS/Apps/Say.asm
|
$(DISKTOOL) put $@ CosmOS/Apps/Say.asm
|
||||||
$(DISKTOOL) put $@ CosmOS/Source/services.asm
|
$(DISKTOOL) put $@ CosmOS/Source/services.asm
|
||||||
|
$(DISKTOOL) put $@ testPrograms/stringKeyword.asm strings.asm
|
||||||
|
|
||||||
# The system as well as the disk. Building only the image leaves whatever cosmos.bin was
|
# The system as well as the disk. Building only the image leaves whatever cosmos.bin was
|
||||||
# there before, or none at all, and then the disk is booted with a system that does not
|
# there before, or none at all, and then the disk is booted with a system that does not
|
||||||
|
|||||||
Reference in New Issue
Block a user