Wenn die SD-Detektion auf einem fx-9860GII nicht funktioniert, obwohl die SD-Option hardwaremäßig installiert ist, könnte man das ggf. reparieren. Es gibt da syscall 0x0468, das i. Allg. verwendet wird, um die SD-Option zu detektieren. Wenn syscall 0x0468 eine Null zurückgibt, dann ist die SD-Option auch aus dem Memory-Manager des fx-9860GII SD verschwunden. Umgekehrt kann ich nicht testen. Ich besitze nur den fx-9860GII SD. Auf einem SD gibt syscall 0x0468 eine eins zurück.
Mögliche Ursachen dafür, dass die unten angegebenen Rezepte nicht zum Erfolg führen:
es kann sein, dass syscall 0x0468 innerhalb des OS nicht immer konsequent benutzt wird, um auf die SD-Option zu testen. Dann muss man im OS weitersuchen und die entsprechenden Stellen anpassen.
Manchmal wird ein Prozessor-Port-bit benutzt, um eine Hardwarekomponente physikalisch über einen Transistor freizuschalten (so machen die das z. B. bei der seriellen Schnittstelle). Dann wird es knifflig bis hoffnungslos.
Bist Du sicher, dass sich auf dem GII mit SD keine zusätzlichen diskreten Bauteile auf dem Board befinden, die auf dem Board des GII ohne SD fehlen?
Hinweis: ich gebe die Adressen immer in Bezug auf das OS an, also mit dem Offset 0x80000000.
Ein OS-Image beginnt natürlich bei 0x00000000.
Ich empfehle, die angegebenen Tests immer durchzuführen.
Und nicht vergessen, am Ende die Prüfsumme des OS anzupassen!
Die Prüfsumme ist die Summe aller Bytes von $80010000 bis $8024FFF7.
Sie wird als int-Wert an $8024FFF8 hinterlegt.
Da es inzwischen auch die OS Version 2.01 gibt, gibt es auch zwei Rezepte:
für fx-9860GII OS 2.00:
Zuerst testen, ob die folgenden Bedingungen im Quellimage erfüllt sind:
Der String ab $80010020 muss 02.00.0000 lauten.
Die Bytes ab $8001007C müssen $80;$1B;$99;$CC sein.
Die Bytes ab $8024FFF8 müssen $10;$02;$1D;$7F sein.
Die Bytes ab $80067D80 müssen $4F;$22;$7F;$FC;$93;$1A;$D2;$18 sein.
Wenn man auf dem GII-OS 2.00 dann
an $80067D80
die Bytes $00;$0B;$E0;$01 schreibt
dann gibt syscall 0x0468 eine eins zurück.
für fx-9860GII OS 2.01:
Zuerst testen, ob die folgenden Bedingungen im Quellimage erfüllt sind:
Der String ab $80010020 muss 02.01.0000 lauten.
Die Bytes ab $8001007C müssen $80;$1B;$A5;$90 sein.
Die Bytes ab $8024FFF8 müssen $0F;$F5;$61;$FE sein.
Die Bytes ab $80068AB0 müssen $4F;$22;$7F;$FC;$93;$1A;$D2;$18 sein.
Wenn man auf dem GII-OS 2.01 dann
an $80068AB0
die Bytes $00;$0B;$E0;$01 schreibt
dann gibt syscall 0x0468 eine eins zurück.
---
$00;$0B;$E0;$01 ist
rts
mov #1, r0