Nachdem ich am Sonntag nach etwas hirnen den FA12 Treiber noch in den Boot Loader integriert hatte, blieb nur noch die Frage, wie Testen?
Ich hab deshalb heute mal eine SD-Karte via Partition Assistant mit drei Partitionen erstellt. Da der Partitionierer leider keine FAT12 Partitionen erstellen kann sah die Partitionsliste erst mal so aus:
Partition 1 250MB FAT16
Partition 2 250MB FAT16
Partition 3 7GB FAT32
Aus Partition 1 habe ich dann via Disk Editor eine 1,44MB große FAT12 Partition gebastelt, welche auch sofort von Windows erkannt wurde. Die neue BOOT.SYS drauf kopiert und gleich mal im Junior gestartet. Der anschließende Crash kam tatsächlich nicht vom FAT12 Treiber, sondern wurde durch meine CLUSTER_TO_BLK Routine verursacht, die mit einer Clustergröße von einem Block nicht zurecht kam. Mit einem BEQ war das dann aber behoben. Ausserdem war mir aufgefallen, dass ich bisher - entgegen meiner Code Kommentare - bei FAT16 und FAT32 ein EOF mit Carry Flag = 0 statt 1 angezeigt hatte. Im FAT12 Code war das richtig. Da hieß aber, dass der FAT12 Loader nach dem ersten geladenen Block gleich abgebrochen wurde - weil siehe oben. Das ganze war dann im FAT16/32 Code mit einem CMP $FF statt wie bisher CMP $00 (was man ja sowieso nicht machen soll) aus der Welt.
Erneuter Versuch...und Tataaaa, die vollständige 32KB große BOOT.SYS war im Speicher.
Ich habe im ROM auch noch einen Fehler gefunden, weshalb ich auch hier gleich ein paar weitere Änderungen vornehmen werde.
Bisher wurde von der ROM Boot Routine bei einer SD-Karte im MBR nur die Partition 1 berücksichtigt, welche sofort geladen wird, wenn diese als Boot fähig markiert ist.
Ich werde jetzt allerdings - und das ist der Grund, warum ich auf meiner SD-Karte drei Partitionen untergebracht habe - den MBR daraufhin untersuchen, ob dort auch schon ein 6502 Boot Code liegt, und diesen dann gegebenenfalls laden. Somit kann ich dort ein Boot Menü unterbringen und so verschiedenen Betriebssysteme von SD starten. Das macht es dann auch mit dem CPM-65 von Dietrich einfacher.
Sobald ich da was geschrieben habe und der Bootstrap Loader für FAT32 Partitionen auch läuft, melde ich mich wieder.
Edit: Für alle die es interessiert als Anhang noch der neue Code der Boot.sys