Opis języka programowania CASIO FX-7000G

Język programowania jest prosty słowa kluczowe są teokenizowane. Tokenizowane oznacza, że symbole i znaki są używane zamiast słownych  poleceń. Minimalizuje to pamięć używaną w programach. Ten typ języka programowania, jest powszechne w dzisiejszych kalkulatorów graficznych z Casio.
Polecenia są ciekawe:

:  dwukropek oddzielne komendy.

? Polecenie wejścia. Kalkulator monituje o wartości.

„PromptMessage”? Wprowadzania poleceń w wierszu wiadomości.

◢ poleceń wyjścia. Kalkulator zatrzymuje się i pokazuje wynik. Kontynuować program przez naciśnięcie EXE. Na FX-3650P oraz FX-6300G, kiedy jest spotkanie ◢ podczas wykonywania programu, kalkulator zatrzymuje i Disp wskaźnik jest obecny.

Idź polecenie Goto n, n jest liczbą 0-9.

LBL n polecenie Label, n jest liczbą 0-9.

⇒ Komenda Jump. To jest podstawowy if-then-else struktura. Na FX-7000G, a FX-6300G, polecenie jest wprowadzane przez SHIFT tłoczenie, 7

Składnia:

⇒ zestawienie badania zrobić, jeśli test jest prawdziwe: skip to tutaj, jeśli test jest fałszywy

Isz oraz podwyższenie DSZ i spadek o pamięci, 1, odpowiednio. To jest podobna do pętli For-Next.

Składnia:

Isz var: var czy jeżeli ≠ 0: przejdź do tutaj, jeśli var = 0

Składnia jest taka sama dla DSZ.


Wnętrze CASIO FX-8500G

 

A oto prześliczne wnętrze kalkulatorka, niestety trudno oprzeć się wrażeniu bylejakości dominującej coraz nowsze konstrukcje.

Obudowa na zastrzaskach – które już popękały i calość skrecona za pomcą dwu śrubek – zamiast 10 jak to było w 7000G 🙁 ale jak widać takie czasy….

Na pierwszy rzut oka dostrzegamy dwie 8 kb kostki pamieci RAM- jednak dla użytkownika dostępne jest jedynie 6566 bajtów. Mozna sie domysleć ze 1626 bajtów zjada system co daje łacznie 8192, a pozostałe 8 kb to na edytor teksu.

Pamieci rom programowanej maską mamy aż 32 kb ! co w połączeniu z 18 kb pamięci wewnętrznej daje już całkiem sporo – no chyba ze wewnetrzna pamiec jest wylaczona….

 

Różnica między FX-7000G a FX-7000GB

z zewnątrz róznice są bardzo dyskretne – nieco inne maskowanie szkla wysiwtlacza, klawisze AC i DEL czerwone jak w innych modelach CASIO a nie pomaranczowe oraz krój liter bardziej podobny do nowszych produktów casio.

W srodku natomiast widoczna jet zdecydowanie nowsza architektura – tranzystory w wersi SMD zamiast typowych SOT oraz nowszy procesor w obudowie 44 nózkowej.

Inna kostka pamięci.

Ponaddto widoczny zerar 1,6 MHz zamiast 0,91 Mhz co w praktyce daje blisko dwukrotnie szybsze dzialanie i jest naprawde widoczne!

Rysowanie wykresów czy uruchomienie niecobardziej skomplikowanego programu jest zdecydowanie przyjeniejsze.

Przyznam ze sam wczesniej tjuningowalem swojego 7000G przez wlutowanie mu kwarcyka 2MHz – ale to był dramat dla zasilania, kiedyś za komuny dostać baterie CR to był spory koszt dlatego bylem zmuszony przerobic zasilanie na 6F22 co z kolei bylo dramatem dla esteyki kalkulatora….

Zupełnie nowy jest też blok wyświetlacza, na jedej kości a nie nie na dwuch.

Casio FX-8000G

Production started :

Production Ended :
Original Price :
Dimensions
Weight
Produced in
Power
Power Consumption
Operating brightness
Type of calculator
Display
No of digits
Category
Functions
Memory
Technology
Quantity Produced
Manual

 

Another approach – shucking the clamshell, further. Book?

Message #1 Posted by Wanderley Navarro on 3 June 2011, 2:13 p.m.

After swapping several good HP-18C bodies with good HP-19BII & HP-28S CPUs I find now that dealing with the Clamshells is not too dificult. Not true for patience however…

For part of this demonstration was used the body of an 19BII without the CPU that was previously removed prying the upper part of the front since both front and back was already broken. This is why you see that the keyboard stakes are intact. The labels are from the 18C body donor.

Warm up well before attempting to remove the labels.

Initiate the removal lifting one corner with the help of a sharp blade and keep blowing hot hair.

This is what you will find. Notice that the stakes near the latch area was already broken at its base and came off entirely along with the label (as pointed out by Randy on the previous thread).

I use a Dremel with vertical suport and a drill bit of 3/32″ to remove the mushroomed heads of the stakes. Remember that there are stakes under the label located above the display too.

To set up the maximum down movement of the drill: First – lower the drill just enough to touch the stake head with the drill bit.

Second – with the drill bit touching the stake head adjust the lever on the suport to have the vertical movement stoped at this point.

Third – release the drill to its upper position and insert a sheet (+/- 1 mm) of cardboard below the calculator that will be lifted a bit. This way the cardboard thickness will define the deep of the drill.

Notice (between the keys 5-6-8-9) that after drilling the head a small portion of the stake must remain available to be mushroomed in the reassembling process.

The stake’s head that was removed.

So, let’s take a look at the most common key issues that affect the models of this series:

1 – Broken threads on the keyboard flex PCB;

The most common area to search for broken threads are located on the lower center corners where the flex PCB folds. Look at the other areas where the PCB folds also.

Use the keyboard schematic (provided below at the end) to find the faulty thread and fix it using something like a conductive silver mix for heat sensitive surfaces.

2 – Bad connection between the keyboard flex PCB and the main PCB that can be due to:

2.1 – Decomposing compression foam;

To solve this problem I go in another direction instead of replacing the foam, with the use of the silver mix on the contact points of the two PCBs. Depositing a good amount to form a small mound will fill the gap of contact between the two PCBs.

On the flex PCB points of contact…

Notice the small mound…

On the main PCB contacts…

Small mounds also…

2.2 – Broken stakes near the display area;

2.2.1 – You saved the original stakes. Better if they are still glued on the keyboard overlay in its original position. This is relevant since the stakes broke at variable angles and lenghts.

2.2.2 – The original stakes are missing. So a request from a donor is needed.

Cut flush to the back of the donor and sand any eventual remaining piece of stake on the receiver. See that the model on the picture below has already donated almost all its stakes.

With the stakes at hand some tools will be needed to accomplish the task of reinsert them. Super glue, a sharp pointing tool, a needle alike tool and a small piece of plastic to serve as the glue base.

Press the needle at the top of the stake and you will have a good way to work with it.

Drop a small amount of glue on the plastic base and use the pointing tool to put only the amount needed on the place where the stake will be glued.

Reposition the empty keyboard structure back in place and insert the stake on its hole. Allow a bit for the glue to dry. Remove the keyboard structure and repeat for the next stake. After all the glued stakes in place allow some time (I use a day) to work on the next step.

Now in the process of reassembling you will mushroom the stakes to form a head. Use a not too hard tool to apply pressure near the stake that will be mushroomed.

The pressure must be applied and maintained while the stake is mushroomed. This is maybe the most important moment since pressure between the halves is a key factor. So avoiding any damage apply how much you can. Wait the tool a second in place for the plastic cool down.

This is how it will look after the melting process. The new head must be entirely inside the hole. With the above mentioned pressure the result is a calculator as sturdy as the original.

For good mushroomed heads try to use a not too sharp iron tip.

Color of body, labels, keys and CPUs aside the five models of the series are all the same. But one thing to do when swapping is to reposition the beeper since the 18C have it on the middle and the others on the upper left. The front HP logo can be swapped too. Just heat it a bit and remove with the aid of

a sharp blade. Another diference between the 18C and the others is the lenght of the springs inside batteries’s chamber. On the 18C they are a bit short and that is the reason you do not see too much 18Cs with broken batteries door area. It seems that at some point HP changed the project using longer

springs that resulted in more pressure on the door. So, this is why changing batteries on a 18C is a much more easier task than on the others. Not sure now but I think the 28C has the short springs too.

I was able to map the keyboard schematic as follows. In the absence of a more appropriate design tool the good old manual method was used. I’m sure several of you will be able to do a better job translating it with a proper sofware.

Dostęp do całej pamięci kalkulatora Casio FX-8000G oraz uruchamianie na nim programów maszynowych

Autorem poniższych informacji i programów jest Samir Ribic.


Instalacja

W celu usunięcia ograniczeń dostępu do pamięci należy przeprowadzić poniższą procedurę dokładnie według opisu. Pominięcie choćby jednego kroku uniemożliwi osiągnięcie spodziewanego efektu.

  1. Wciśnij Reset.
  2. Mode 2
    Powinno pokazać się 1446 wolnych bajtów
  3. Mode 1
  4. Range
        Xmin -10
         max 10
        scl 1
        Ymin -10
         max 10
        scl 1
  5. Wciśnij G-T
  6. Graph Y=0
  7. Range
        Xmin -10
         max 10
        scl 0
        Ymin -10
         max 10
        scl 0
  8. Wciśnij G-T
  9. Następnie wciśnij AC a następnie Shift oraz Alpha i wpisz
    SAVE "A"G

    Pomiędzy SAVE i pierwszym cudzysłowem ma być spacja, pomiędzy drugim cudzysłowem oraz G nie może być spacji.

  10. Wciśnij EXE
    Pojawi się komunikat SYS error
  11. Wciśnij strzałkę w lewo a potem EXE aby powtórzyć ostatnie polecenie
    Pojawi się teraz komunikat Save execution I/O error
  12. Ponownie strzałka w lewo i EXE aby powtórzyć ostatnie polecenie
    Spowoduje to znowu komunikat SYS error
  13. Wciśnij AC i przejdź do mode 3 (PCL). Będzie widać dwa zajęte programy (4 i 5). Skasuj program 4 klawiszem AC. Teraz wszystkie programy będą zajęte. Wciśnij SHIFT DEL żeby skasować wszystkie programy.
    Obecnie jest 1654 bajtów wolnej pamięci. W tym stanie nie ma już kontroli zakresu indeksów tablic.

W celu przetestowania nowych możliwości można wpisać:
1.11111111 -> A[208]
Następnie EXE oraz G-T.
Właśnie zapisałeś 8 bajtów do pamięci graficznej wyświetlacza!


Zastosowanie

Najbardziej użyteczną zaletą nieograniczonego dostępu do pamięci jest możliwość użycia graficznego bufora drukarki jako pamięci dla tablic w zakresie Z[615] do Z[960].

Pod adresem zajmowanym przez zmienną Z[358] jest stos maszynowy. Zapis do tej zmiennej specjalnie skonstruowanej wartości zawierającej adres procedury umożliwia uruchamianie programów maszynowych na kalkulatorze fx-8000G. Niestety, zakres wartości które można w ten sposób zapisywać do pamięci jest ograniczony przez przyjęty w fx-8000G dziesiętny (BCD) system kodowania liczb.

W tym trybie możliwe było dokonanie następujących osiągnięć:

  • Tablica o rozmiarze 345 elementów bez ograniczenia ilości pamięci dla programów i edytora plików
  • Wyświetlanie wszystkich możliwych 255 znaków (łącznie z literami greckimi, japońskimi, małymi cyframi itp.)
  • Proste animacje

Trick odkryli wspólnymi siłami w lutym 1989 roku: Zeljko Juric, Samir Ribic i Emir Kapic.


Uruchamianie programów maszynowych

Liczba (-5/9)*(1e-44) składa się z ośmiu bajtów o wartości &H55. Adres &H5555 jest zajęty przez zmienną A[42] obejmującą zakres adresów &H5550~&H5557. Zatem wpisanie wartości (-5/9)*(1e-44) do zmiennej Z[358] uruchomi kod maszynowy zawarty wewnątrz zmiennej A[42].

Wygodniejszym miejscem dla programów maszynowych byłby obszar pamięci graficznej ekranu w zakresie adresów &H5A80 do &H5D80. Przy użyciu komendy Plot można w ten obszar wpisać dowolną wartość. Komenda Cls zapełnia go wartością &HFF, natomiast komenda Plot kasuje wybrany bit na zero.

Następujący program pośredniczący wykonuje skok pod adres programu maszynowego umieszczonego w pamięci ekranu:

  ORG  &H5555
  LDW  IX,&H5930
  LDW  IY,0
  ADW  IX,&H90
  LDW  IY,&H11
  LDW  IY,0
  ADW  IX,&H90
  LDW  IY,&H11
  LDW  IY,0
  ADW  IX,&H98
  LDW  IY,&11
  LDW  IY,0
  IJMP IX

Dosyć dziwny wygląd tego programu jest spowodowany ograniczonym zakresem wartości, które można wpisać do zmiennej. Wszystkie operacje na rejestrze IY są tylko wypełniaczami miejsca bez żadnej funkcji.

Wpisanie programu pośredniczącego:

  0.3594 -> A[42]
  1.00419048E41 -> A[43]~A[44]
  1.00419848E41 -> A[45]
  1.0007705E41 -> A[46]

Tak wygląda jego kod w pamięci:

  5550: 99 00 00 00 00 40 59 30
  5558: 41 00 00 48 90 41 00 11
  5560: 41 00 00 48 90 41 00 11
  5568: 41 00 00 48 98 41 00 11
  5570: 41 00 00 50 07 70 00 11

Uruchomienie programu:

  (-5/9)*(1e-44) -> Z[356]~Z[358]

W następujących przykładach zostanie użyty taki oto krótki program maszynowy zapisujący bajt do pamięci graficznej ekranu:

  ORG  &H5AE8
  LDW  IX,&H5B50  ;40 5B 50
  ST   (IX),&HAB  ;D0 AB
  JMP  0          ;70 00 00

Program ładujący (1)

Ten prosty program kopiuje liczby szesnastkowe wpisywane z klawiatury do pamięci graficznej ekranu zaczynając od adresu &H5AE8.

Program 0, Mode Comp

  0.3594 -> A[42]
  1.00419048E41 -> A[43]~A[44]
  1.00419848E41 -> A[45]
  1.0007705E41 -> A[46]
  Range 1,95,0,1,63,0
  Cls
  8 -> A
  Lbl 0
  53 -> C
  8 -> D
  Plot 0,0
  Prog 1
  Lbl 1
  Frac (B/2)=0 => Plot A,C
  Int (B/2) -> B
  Isz C
  C=57 => 49 -> C
  Dsz D
  Goto 1
  Isz A
  Goto 0

Program 1, Mode BASE-n

  Hex
  ?->B
  Dec

Uruchom Program 0 wpisując polecenie:

  Prog 0

Następnie wpisz dane szesnastkowo, każdy bajt osobno:

  40 5B 50 D0 AB 70 00 00

Zakończ wpisywanie danych za pomocą Mode 1 a następnie Mode +

Uruchom program maszynowy wpisując:

  (-5/9)*(1E-44) -> Z[356]~Z[358]

Po restarcie systemu wciśnij G-T aby obejrzeć bajt wpisany do pamięci graficznej ekranu.


Program ładujący (2)

Inna wersja kopiująca dane pobrane z obszaru Programu 1 do pamięci graficznej ekranu zaczynając od adresu &H5AE8.

Program 0, Mode Comp

  Ans -> B
  S<2 => Goto 0
  0.3594 -> A[42]
  1.00419048E41 -> A[43]~A[44]
  1.00419848E41 -> A[45]
  1.0007705E41 -> A[46]
  Lbl 0
  S=0 => Goto 1
  Range 1,95,0,1,63,0
  Cls
  8 -> C
  Lbl 3
  " "
  Dsz C
  Goto 3
  11 -> A
  Lbl 1
  53 -> C
  32 -> D
  B<0 => B+2 Xy 32 -> B
  Lbl 2
  Frac (B/2)=0 => Plot A,C
  Int (B/2) -> B
  Isz C
  C=57 => 49 -> C
  Frac ((D-1)/8)=0 => Dsz A
  Dsz D
  Goto 2
  A+8 -> A
  0 -> S
  Plot 0,0

Program 1, Mode Base-n

  2 -> S
  Hex
  405B50D0:Prog 0
  AB700000:Prog 0

Program 1 zawiera dane w postaci szesnastkowej, w grupach po osiem cyfr (cztery bajty), po każdej grupie danych następuje wywołanie Prog 0.

 

  • Gdy zmienna S jest równa 0, wpisywanie jest kontynuowane od ostatniej pozycji.
  • Gdy zmienna S jest równa 1, wpisywanie rozpoczyna się od początku (od adresu &H5AE8).
  • Gdy zmienna S jest równa 2, wpisywanie rozpoczyna się od początku oraz dodatkowo w zmiennych A[42]~A[46] jest umieszczany program pośredniczący.

Uruchom Program 1. Ilość danych jest ograniczona do 88 bajtów kopiowanych pod stały adres.