; Settle.asm ; Says how the last start went, and tells the machine to stop falling back. ; ; A program rather than a shell command, because the shell is for the things you cannot do ; without it and this is not one of them. It reaches the system through SWI like anything ; else, which means it can be replaced, left off a disk, or called by whatever comes to ; call programs in sequence - and none of that is true of a word built into the shell. ; ; ---- What settling means ---- ; ; The loader marks the disk before handing over and the system clears the mark on reaching ; its prompt, so a mark still set is a start that never arrived. After that the loader uses ; the fallback and KEEPS USING IT, because a system known not to start should not be tried ; every other boot for ever. ; ; Settling is how it is told that has changed. It does not fix anything and it does not ; check anything: it says "the situation is different now, try again". Which is why it is a ; deliberate act by somebody who has just changed something, rather than anything automatic. ; ; Written by Anachronaut #Include services.asm #Program #Base 0x4000 start: SWI osBootState MVQA SETD.0 State STA.0 BRA alreadySettled INIB 0d2 XOR BRQ fellBack ; Trying. Nothing has gone wrong yet - this is what the disk looks like while a start is ; still in progress, which from in here means the system that is running has not reached ; its prompt, which it plainly has. So the mark is stale. SETD.0 WasTrying SWI osPrintString BRI doSettle fellBack: SETD.0 WasFallen SWI osPrintString doSettle: SWI osBootSettle MVQA BNA settleFailed SETD.0 Settled SWI osPrintString RSTA SWI osExit settleFailed: SETD.0 NoDisk SWI osPrintString INIA 0d1 SWI osExit alreadySettled: SETD.0 Already SWI osPrintString RSTA SWI osExit #Data #Base 0x2000 WasTrying: "the disk says a start is still in progress " WasFallen: "the disk says the last start did not arrive, so this is the fallback " Settled: "settled: the next start will use the configuration again " Already: "already settled: the next start will use the configuration " NoDisk: "nothing to settle: no disk answered " State: 0x00