Toinet <antoine.vignau@laposte.net> writes:
To be honest, the idea is to add a SOS File System Translator for GS/
OS. Not now, not tomorrow but later. I have so many things to do
before.
But, SOS disks need to be identified. It can be with a checksum of
block 0, check some bytes in the volume directory, etc. That's why I
needed such information.
I'm a little bit lost with block 0 (ProDOS) vs block 1 (SOS) - Let's
take an example: imagine I own an Apple I!/ and I also have some
disks. Am I right to say that the boot driver loads block 0 of the
disk or are there the two blocks (ProDOS and SOS) on such disks?
On ProDOS disks with two boot blocks, 0 and 1, block zero is loaded at
$a000 on an Apple III.
The bit of code in block 0 executed on a III then loads block 1 at $a000
and uses that to bootstrap SOS.KERNEL.
00a000: org $a000
00a000: * Entry from Apple III ROM with carry clear
00a000: 01 38 ora (z38,X) ; does nothing useful
00a002: b0 03 bcs ha007 ; branch never taken on Apple III, always on Apple II
00a004: 4c 32 a1 jmp A3Entry
00a007: ... Apple II code deleted ...
00a132: ************************************
00a132: *
00a132: * Apple III Boot entry point
00a132: *
00a132: a9 9f A3Entry lda #$9f ; push return addr $A000 onto stack
00a134: 48 pha
00a135: a9 ff lda #$ff
00a137: 48 pha
00a138: a9 01 lda #$1 ; read block 1 into $A000-$A1ff and execute it
00a13a: a2 00 ldx #$0
00a13c: 4c 79 f4 jmp BLOCKIO
A disk formatted by SOS might only contain the "block 1" block, located
at block 0, and so it would only boot on an Apple III.