Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Discussions


Index du Forum » Discussions » fx-9750GIII Storage Memory Crash
Calcloverhk Hors ligne Membre Points: 333 Défis: 10 Message

fx-9750GIII Storage Memory Crash

Posté le 26/10/2020 10:10

Updated in 2023-12-7 UTC+8

Introduction
In August 2020, I encountered the problem on my fx-9750GIII where I couldn't use my storage memory. Later, I found that a file with impossible name "僂ASSE.g1m" appeared in my calculator stoarge and couldn't delete it in any available ways. After investigation it's confirmed that this file was originally "-CASSE.g1m" from Calcraft. The reason of having a Chinese character is that the hex code of "僂" is the combination of the hex codes of "-" and "C".

Affected models
Possibly all USB Power Graphic 3 models
- fx-9750GIII: CalcLoverHK, PhantomOverrideAlpha, laomo, 0070, zhuchaokn
- fx-9860GIII: yukki410
- Graph 35+E II: yet to be seen

Characteristics
- Unable to modify the storage memory (even "Initialize All" won't work)
- LINK app shows error "Data conversion failed."
- Windows reports error 0X8007045D (I/O device error) when attempting to modify the storage content
- (Uncertain, happened once) A file with impossible name (e.g. 僂ASSE.g1m)

Possible procedures
1. Install C.Basic for FX (important as while it's possibly the main cause, it's also used to execute the workaround syscall below)
2. Create a new program file in SMEM mode and save it without typing anything, then re-open the file OR open an existing file in SMEM mode
3. Type something randomly and delete what you've exactly typed (even typing and then deleting a single letter works, just make sure the final modified file is exactly the same as the original one)
4. Save the file by pressing [EXIT]
5. The moment when you get a "Can't delete file" error pop-up with error code -6 is where this bug is triggered

At first it seems like nothing happened after the error, but as the time passes under normal use, C.Basic starts to pop up the same error more frequently and eventually even a modified program with a single letter added can't be saved.

Reasons
Deducing from the error description ("Can't delete file"), it appears that C.Basic saves a file by deleting the original file first and creating another one with exactly the same content as the modified one. If there is no actual change in the latter one however, C.Basic may confuse between both files and thus being unable to delete the proper file, while forgetting to change the Bfile status from "file opened" state to "ready" state.

However, such problem also appears in other users' GIII calculators without C.Basic, and the reasons for them are unclear.

Workaround
Warning! This method can only be used on the USB Power Graphic 3 models!
Kudos to yukki410 for discovering this method!
Execute Syscall(0x205) in C.Basic and restart the calculator.

Edit (2023-12-7):
I did more tests on this bug after Sentaro21's return on C.Basic development. Unfortunately, the SMEM on my fx-9750GIII is now permanently unusable without C.Basic after initializaing. Somehow it successfully deleted the whole memory while keeping the SMEM in the locked state. Nevertheless, it confirmed a few things.

> This bug can happen even under C.Basic's default settings.
> You may notice a significantly slower speed of saving program while repeating the procedures.
> Suprisingly Syscall(0x205) becomes one of the main causes of this bug. If you manage to trigger the bug using the workaround/still fail to access SMEM after doing it, DO NOT initialize the whole calculator and keep it as is. C.Basic is probably your last resort to dodge this problem.

If you have any other method to solve this problem, feel free to post it here! Thanks for your help and also @Lephenixnoir @Yatis for helping me tackle the problem ever since the encounter of this bug


Précédente 1, 2, 3, 4, 5, 6, 7 Suivante
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 12/10/2023 09:25 | #


ok, so is that it for the test menu or is there still the four numbers to get into a more... menu menu
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 12/10/2023 09:43 | #


What I'm suspecting is that the four-number code to get into the extra spicy menu menu was changed, or another key combination was added (and hopefully not removed completely). Hence the reverse-engineering to go into the code and find the relevant spot
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 13/10/2023 08:29 | #


I have... no experience in reverse engineering calculatoe secret codes
Calcloverhk Hors ligne Membre Points: 333 Défis: 10 Message

Citer : Posté le 16/10/2023 11:01 | #


Update:

With Sentaro21 returning to C.Basic development, I started investigating this problem again. However, it is very strange that the error does not appear consistently this time. Yesterday I even got error -4 for some reason (Edit: I figured out the reason: C.Basic creates and saves new file in the folder that is selected instead of the current folder location. As I initialized the calc and installed C.Basic immediately, only [@MainMem] is visible in SMEM mode. Creating a new file makes C.Basic attempt to save it in @MainMem folder which causes error -4 as you cannot create a file there), and after initializing the whole calculator I could not replicate this bug by above procedures.

But one thing that I noticed is that while I was replicating this bug, I found that the file saving was noticeably slower/more inconsistent than before every time I repeat the procedure. Moreover, and I should have mentioned before, I realized I have turned on "Heap" mode in Pict mode settings during previous tests. I am now repeating the steps under default settings and see if it still happens.
C.Basic Wiki Project progress as of 2024/2/12
   30%


Calcloverhk Hors ligne Membre Points: 333 Défis: 10 Message

Citer : Posté le 17/10/2023 06:31 | # | Fichier joint


I have included CBasic1.g1m config file that may cause this issue. Comparing to the default settings, I changed the following options:
- Syntax Help: On
- Max Mem Mode: On
- EnableExFont: On
- Edit ExtFont: On
- Hide StatBar: On
- Edit +Indent: 1
- Edit LineNum: On
- IfEnd Check: On
- Auto file save: On
- Force g1m save: On
- Pict mode: Heap
- Execute mode: INT%
C.Basic Wiki Project progress as of 2024/2/12
   30%


Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 17/10/2023 08:59 | #


Sounds like Auto file save and Force g1m save are the most storage-memory-related. Are all of these options changed needed at the same time or could some of them keep their default values?
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 27/10/2023 05:19 | #


what is C.basic
Redcmd Hors ligne Membre Points: 380 Défis: 7 Message
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 28/10/2023 02:13 | #


any progress on the four digits recently?
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 28/10/2023 02:24 | #


I did not install Cbasic onto my calculator prior to the problem
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 28/10/2023 02:24 | #


and not i cannot install anything, so Cbasic solutions are.. not helpful
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 03/11/2023 21:55 | #


any progress on the 4 numbers leph?
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 05/11/2023 23:08 | #


Yes! I've done more work and the analysis I need is almost ready. I'm really sorry for the delay, I didn't think I'd be this busy (when I blink a whole week is gone lol). Things are clearing up now, so hopefully I'll update you with some bootcode stuff sometime next week. Please feel invited to keep pinging as it bumps the matter up my priority list.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 06/11/2023 02:25 | #


nice, thank you bro.
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 13/11/2023 00:04 | #


Quick Sunday night update (damn): been fighting with C++ for the last few hours, so nothing groundbreaking to show at the moment, but I've cleaned up code that wasn't tested before.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 14/11/2023 05:59 | #


ok just tell me if you want me to test or try anything
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 30/11/2023 20:41 | #


any news?
Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 05/12/2023 07:09 | #


._. erm... any progress lephen?
Lephenixnoir En ligne Administrateur Points: 24232 Défis: 170 Message

Citer : Posté le 05/12/2023 09:12 | #


Yes! Sorry sorry I was away for a week... got some vacation, finally. Did some coding while in Amsterdam, now I have function call targets basically automatically (here in comments at the end of call instructions):

casiowin|cg_3.60> d -a %10
fun.8002c9a2 (%0010):
  bb.8002c9a2:
    mov     #0, r6
    mov     r6, r5
    mov     r6, r4
    add     #-24, r15
    mov.l   %08c8, r1
    mov.l   r6, @(12,r15)
    mov.l   r5, @(8,r15)
    jsr     @r1                 # 0x800c3f36
    mov.l   r4, @(4,r15)
    mov.l   %17f7, r7
    mov     #6, r4
    mov.l   %01f1, r13
    mov.l   %01f9, r14
    jsr     @r7                 # 0x802abae8
    mov.l   @(4,r15), r11
    mov     #1, r5
    mov.l   0xff00000c, r12
    jsr     @r13                # 0x8004fcba
    mov     #2, r4
    mov     #0, r6
    mov.l   0x8038b790, r4
    jsr     @r14                # 0x8004fe20
    mov     r6, r5
    mov     #2, r5
    jsr     @r13                # 0x8004fcba
    mov     r5, r4
    mov     #0, r6
    mov.l   0x8038b7a0, r4
    jsr     @r14                # 0x8004fe20
    mov     r6, r5
    mov     #3, r5
    jsr     @r13                # 0x8004fcba
    mov     #2, r4
    mov     #0, r6
    mov.l   0x8038b7b4, r4
    jsr     @r14                # 0x8004fe20
    mov     r6, r5
    tst     r11, r11
    bf      <8002ca02>

  bb.8002c9f0:
    mov     #4, r5
    jsr     @r13                # 0x8004fcba
    mov     #3, r4
    mov     #0, r6
    mov.l   0x8038b7c8, r4
    jsr     @r14                # 0x8004fe20
    mov     r6, r5
    bra     <8002caf2>
    nop

  bb.8002ca02:
    mov.l   @(4,r15), r0
    cmp/eq  #1, r0
    bf      <8002ca1a>

  bb.8002ca08:
    mov     #4, r5
    jsr     @r13                # 0x8004fcba
    mov     #3, r4
    mov.l   0x8038b7d4, r4
    mov.l   @(8,r15), r5
    bsr     <8002cb44>
    mov.l   @(12,r15), r6
    bra     <8002caf2>
    nop

  bb.8002ca1a:
    mov.l   @(4,r15), r0
    cmp/eq  #9, r0
    bf      <8002ca32>

  bb.8002ca20:
    mov     #4, r5
    jsr     @r13                # 0x8004fcba
    mov     #3, r4
    mov.l   0x8038b7e0, r4
    mov.l   @(8,r15), r5
    bsr     <8002cb44>
    mov.l   @(12,r15), r6
    bra     <8002caf2>
    nop

  bb.8002ca32:
    mov.l   %1a2c, r8
    mov.l   @r12, r5
    jsr     @r8                 # 0x802e2208
    mov.l   r5, @(16,r15)
    add     #36, r0
    mov.l   @(24,r12), r2
    mov.w   0x00000fff, r4
    mov.l   r2, @(20,r15)
    mov.l   @r0, r6
    mov.l   @(4,r15), r0
    cmp/eq  #2, r0
    bf.s    <8002cad8>
    and     r4, r2

  bb.8002ca4c:
    mov     #-32, r4
    extu.b  r4, r4
    cmp/eq  r4, r2
    mov.l   0x8038b750, r2
    bf      <8002ca64>

  bb.8002ca56:
    mov.l   @r2, r4
    bsr     <8002cb44>
    mov.l   @(16,r15), r5
    bra     <8002caf2>
    nop

  bb.8002ca64:
    mov.l   @(4,r2), r4
    bsr     <8002cb44>
    mov.l   @(16,r15), r5
    bra     <8002caf2>
    nop

  bb.8002cad8:
    mov     #-96, r4
    extu.b  r4, r4
    cmp/eq  r4, r2
    mov.l   0x8038b750, r2
    bf      <8002caec>

  bb.8002cae2:
    mov.l   @(8,r2), r4
    bsr     <8002cb44>
    mov.l   @(16,r15), r5
    bra     <8002caf2>
    nop

  bb.8002caec:
    mov.l   @(12,r2), r4
    bsr     <8002cb44>
    mov.l   @(16,r15), r5
    mov.l   %1a36, r13
    mov.w   0x00007532, r11
    mov.l   %0eab, r14
    mov.w   0x00007534, r10
    mov.l   %1a67, r8
    mov.w   0x0000753f, r12
    mov.l   %1839, r9
    jsr     @r13                # 0x802e23d0
    mov     #0, r4
    jsr     @r14                # 0x801951a6
    mov     r15, r4
    tst     r0, r0
    bf      <8002cb00>

  bb.8002caf2:
    mov.l   %1a36, r13
    mov.w   0x00007532, r11
    mov.l   %0eab, r14
    mov.w   0x00007534, r10
    mov.l   %1a67, r8
    mov.w   0x0000753f, r12
    mov.l   %1839, r9

  bb.8002cb00:
    jsr     @r13                # 0x802e23d0
    mov     #0, r4
    jsr     @r14                # 0x801951a6
    mov     r15, r4
    tst     r0, r0
    bf      <8002cb00>

  bb.8002cb0c:
    mov.l   @r15, r2
    cmp/eq  r11, r2
    bf      <8002cb18>

  bb.8002cb12:
    mov.l   %1187, r6
    jsr     @r6                 # 0x801de698
    nop

  bb.8002cb18:
    mov.l   @r15, r2
    cmp/eq  r10, r2
    bf      <8002cb22>

  bb.8002cb1e:
    jsr     @r8                 # 0x802eeb60
    nop

  bb.8002cb22:
    mov.l   @r15, r2
    cmp/eq  r12, r2
    bf      <8002cb00>

  bb.8002cb28:
    jsr     @r9                 # 0x802aea24
    mov     #1, r4
    bra     <8002cb00>
    nop

So I can finally explore the bootcode. I really overestimated how much time I had to make steady progress on projects, but this is definitely still in top priority.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Calcloverhk Hors ligne Membre Points: 333 Défis: 10 Message

Citer : Posté le 06/12/2023 18:32 | #


Updated the thread on the current situation of my fx-9750GIII.

@Lephenixnoir
Thanks for the months of your research once again
C.Basic Wiki Project progress as of 2024/2/12
   30%


Fries Hors ligne Membre Points: 88 Défis: 0 Message

Citer : Posté le 07/12/2023 21:19 | #


Calcloverhk a écrit :
Updated the thread on the current situation of my fx-9750GIII.

@Lephenixnoir
Thanks for the months of your research once again
all hail lephen
Précédente 1, 2, 3, 4, 5, 6, 7 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 75 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd