From 7e8639489b48b45fe01aea99993756833a1c1cff Mon Sep 17 00:00:00 2001 From: Anachronaut Date: Fri, 21 Aug 2026 15:37:08 -0400 Subject: [PATCH] Take the direction out of the last cross references Includes two edits of Anachronaut's: dropping a "See the Assembler Manual" from text that is now IN the Assembler Manual, and tightening a sentence about when a vector number has to be agreed. The first of those was mine to have caught. Moving "Loading A Program From A Disk" into that manual turned a cross reference into a document telling you to go and read itself. I checked for dangling references before the move and found none, because I checked for references by SECTION NAME and not for references to the manuals themselves. Checked properly now, both directions: no other document refers to itself, and nothing that moved says "above" or "below" about something that ended up in a different file. The three remaining directional references are gone with them - two that were correct today and one, "See Numbers You Write Down below", pointing at a section twenty four lines further down that nothing guaranteed would stay there. A reference that carries a direction is a reference that goes wrong the next time anything moves, and this week moved a great deal. There are none left anywhere in the repository. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01E2JrLzFvuFX9fgi1LDRjrW --- Programs/CosmOS/README.md | 2 +- SplitBit Assembler Manual.md | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Programs/CosmOS/README.md b/Programs/CosmOS/README.md index b981060..a682990 100644 --- a/Programs/CosmOS/README.md +++ b/Programs/CosmOS/README.md @@ -263,7 +263,7 @@ boundary. Applications include `Source/services.asm` to obtain stable names and vector numbers for the services CosmOS provides. Neither side ever types a number: the file both of them include is the only place any of them is written down. What each service is and what it -answers in is set out under "What A Program May Ask The System For" below. +answers in is set out under "What A Program May Ask The System For". The largest application CosmOS has is the assembler in `Programs/CosmOS/Assembler/`. It travels with CosmOS rather than with the emulator, for the same reason the C assembler diff --git a/SplitBit Assembler Manual.md b/SplitBit Assembler Manual.md index 382093b..b9d210f 100644 --- a/SplitBit Assembler Manual.md +++ b/SplitBit Assembler Manual.md @@ -10,7 +10,7 @@ The first four say what kind of thing follows them. #Base says where a segment i SplitBit programs must have a Program Segment. You define the start of a program with the #Program Keyword. SplitBit programs may have a Data Segment. You may define the start of the data with the #Data Keyword. -SplitBit programs may have a Vector Segment. You define it with the #Vectors Keyword. See The Vector Segment below. +SplitBit programs may have a Vector Segment. You define it with the #Vectors Keyword. See The Vector Segment. ## Literal Values: @@ -301,7 +301,7 @@ hello: #Base 0x1000 ; And its data from 0x1000. ``` -That is not general placement: a base applies to a whole segment, and only the first thing in one can set it. It is exactly enough for a program that wants to live at one address, which is what a loadable program is. See the Assembler Manual. +That is not general placement: a base applies to a whole segment, and only the first thing in one can set it. It is exactly enough for a program that wants to live at one address, which is what a loadable program is. Whoever does the loading keeps its own code and data below the addresses the loaded program claims. That is an arrangement between the two of them rather than anything the machine enforces. Programs/CosmOS is where that arrangement is written down as a memory map and kept to. @@ -331,7 +331,7 @@ A line with a name and nothing after it declares the name and its number without osExit 0d17 ``` -The numbers are there because this is the case where a number has to be agreed. Everything else in a Vector Segment is numbered by the assembler, which can only see one program at a time - and that is exactly the situation where it cannot help. See Numbers You Write Down below. +The numbers are there because this is the case where a number has to be agreed. Everything else in a Vector Segment is numbered by the assembler, which can only see one program at a time - and that is exactly the situation where it cannot help. See Numbers You Write Down. Five names already mean something: @@ -357,7 +357,7 @@ The assembler will refuse two handlers for the same vector, a name used with SWI ### Numbers You Write Down: -A vector number is worth arguing about in exactly one situation: when two programs that are **not assembled together** have to mean the same thing by a name. A program calling `osExit` was built long before, and separately from, whatever implements it. Nothing the assembler can see ties those two together, because it only ever sees one of them. +A vector number is worth arguing about in exactly one situation: when two programs that are **not assembled together** have to mean the same thing by a name. A program calling `osExit` was built separately from whatever implements it. Nothing the assembler can see ties those two together, because it only ever sees one of them. For that case a number may be written between the name and the handler.