Jump to content



Most Liked Content


#56005 We Have Been Hacked

Posted by flyingfisch on 19 November 2012 - 10:49 AM

Posted Image
  • MicroPro, Casimo, naib864 and 2 others like this


#60058 Try To Hack Your Classwiz Models!

Posted by Hikari Calyx on 12 October 2015 - 10:35 AM

Well, I'm from Baidu fx-ES(MS) bar which is a community to discuss calculators. My ID is jyx8151 there.

 

I'm going to introduce how to hack your Casio ClassWiz Models.

Right now, It should be available in these models:

fx-570EX, fx-991EX, fx-82CN X, fx-350CN X, fx-95CN X, fx-991CN X, fx-530AZ, fx-JP500, fx-JP700, fx-JP900, fx-570AR X, fx-991AR X, fx-92 Speciale College, fx-92B Speciale College, fx-87DE X, fx-991DE X, fx-570SP X Iberia, fx-991SP X Iberia.

If you don't have these models, you may use an emulator. It's available on Casio World Education Website for 90-day-trial except for fx-82/350/95/991CN X and fx-JP500/700/900.

Unfortunately, you can't hack fx-82/85/350EX, fx-82/95AR X, fx-82/350SP X Iberia, fx-95CN X VerB right now because Casio fixed this leak.

It may also work on fx-570VN PLUS, fx-915ES, fx-995ES.

 

The basic tutorial to hack is making an empty box on the screen:

1. 1[÷][(][(]1, along with 13 square roots, 1.

2. Move the cursor to the end.

3. Alpha[∫] or Alpha[x^3] in order to input a colon ":", then input another square root.

4. For fx-82/350/95CN X VerA and fx-991CN X VerA/VerB, press [=] twice, then syntax error. Press left, and delete others but leave the empty box alone.

5. For fx-991CN X VerC and other models , press [CALC],[=], and you may get the same result.

6. After you get an empty box, press left to make the cursor is at the left of box, then press right, then you may see the cursor won't move.

7. Then you can input anything in order to hack the calculator. For more details, I'll edit this post later. If you find the empty box won't appear, please make a reply and tell me your models and version in diagnostic mode.

 

7178_561B8A800.jpg<br/>92C9_561B8A810.jpg<br/>831B_561B8A810.jpg<br/>CEE9_561B8A810.jpg<br/>​

 

P.S. Only Chinese and Vietnamese Casio Calculators have an anti-counterfeit label. To get the sum and Px info, press MENU when CY-2xx appears.


  • anon34, Heinrich-Frederica, TyphousCrane654 and 1 other like this


#55057 آموزش Cplua

Posted by MicroPro on 22 June 2012 - 09:36 AM

سلام دوباره به همه و بریم سراغ قسمت else.

در کد قبلی Ùرض کنید میخوایم اگر x منÙÛŒ باشه برامون Nagative چاپ کنه. این کار رو با یک قسمت else انجام میدیم:

x = tonumber( input() )
 if x > 0 then
   print("Positive")
else
   print("Negative")
end
print("Program finished")
با اجرای برنامه بالا، اگر عددی Ú©Ù‡ میدیم مثبت باشه، شرط x > 0 رو بررسی میکنه Ùˆ چون درست هست Positive چاپ می‌کنه، بعد از روی قسمت else میپره تا به end مربوط به بلوک if برسه Ùˆ بعد Program Finished رو چاپ میکنه. اما اگه عدد منÙÛŒ باشه: شرط x > 0 رو بررسی می‌کنه، چون این دÙعه این عبارت منطقی صدق نمی‌کنه، چیزای بعد از if رو اجرا نمی‌کنه بلکه نگاه می‌کنه اگر قسمت else توی برنامه داشته باشیم (Ú©Ù‡ اینجا داریم)ØŒ اون بخش رو اجرا می‌کنه. پس برامون Negative رو چاپ می‌کنه Ùˆ از if خارج میشه Ùˆ Program Finished هم همیشه چاپ میشه.

خوب حالا اگر یه Ù†Ùر عدد صÙر رو وارد کنه برنامه‌ی بالا چیکار میکنه؟ خودتون امتحان کنید. میبینم Ú©Ù‡ Negative چاپ میشه. چرا؟ خوب معلومه اول شرط x > 0 بررسی میشه، ولی چون 0 بزرگتر از 0 نیست، این شرط غلطه بنابراین قسمت else رو اجرا میکنه.

توی بسیاری از موارد برنامه نویسی جاهایی هست که بیشتر از دو تا انتخاب داریم. مثل این جا اگه بخوایم در صورت وارد کردن عدد 0 عبارت Zero چاپ بشه، در حقیقت توی یه تصمیم سه حالته هستیم. در این مواقع هست که پای elseif هم وسط میاد:

x = tonumber( input() )
if x > 0 then
   print("Positive")
elseif x == 0 then
   print("Zero")
else
   print("Negative")
end
print("Program finished")
برنامه‌ی بالا نشون میده Ú©Ù‡ هر تعداد بخوایم میتونیم حالت‌های مختل٠برای تصمیم‌گیری داشته‌باشیم. توی کد بالا عبارت elseif x == 0 then هم به عنوان یکی از بخش‌های if نوشته شده. اگر کاربر عدد صÙر رو وارد کنه، اول شرط x > 0 بررسی میشه Ú©Ù‡ غلط هست پس برنامه میره جلو ببینه elseif یا else نوشتیم یا نه. چون elseif رو میبینه، شرط x == 0 (بخوانید:‌اگر ایکس برابر صÙر باشد) رو بررسی میکنه Ùˆ میبینه صدق می‌کنه، پس عبارات بعدشو اجرا می‌کنه یعنی Zero رو نشون میده Ùˆ بعد به خارج از بلوک if میره Ùˆ Program Finished رو چاپ میکنه. توجه کنید Ú©Ù‡ اگر 0 وارد کنیم دیگه Negative رو چاپ نمیکنه چون Ú©Ù‡ در یک بلوک if Ùقط محتوای یک بخش if یا elseif یا else اجرا میشه، به عبارت بهتر Ùقط یک تصمیم میتونه گرÙته بشه Ùˆ بعد از اجرای اون تصمیم (Ú©Ù‡ اینجا مثبت بودن یا صÙر بودن یا «در غیر اینصورت» بودن هست) اجرای برنامه از بعد از end مربوط به اون بلوک if از سرگرÙته میشه.

نکته‌ای Ú©Ù‡ اینجا هست اینه Ú©Ù‡ در Ú†Ú© کردن شرط «اگر ایکس برابر صÙر باشد» چرا بجای یک علامت مساوی دو تا گذاشته‌ایم؟ جواب: زیرا این دو علامت با هم Ùرق می‌کنند. = علامت انتساب هست مثلا Ùلان مقدار را بریز توی x ولی == علامت منطقی تساوی هست Ùˆ توی شرطها همیشه باید از == استÙاده کرد Ùˆ استÙاده از = موجب خطا میشه.


مثال دیگه: برنامه‌ای بنویسید که نمره‌های درخشان یک دانشجو رو بگیره، اگر بین 0 تا 10 باشه عبارت Fail رو نشون بده، بین 10 تا 15 عبارت Bad و بین 15 تا 20 عبارت Good. اگر نمره بین این عددها نباشه پیغام Error رو چاپ کنه.

x = tonumber(input())
 if 0 < x and x <= 10 then
   print "Fail"
 elseif 10 < x and x <= 15 then
   print "Bad"
 elseif 15 < x and x <= 20 then
   print "Good"
 else
   print "Error"
 end
با نگاه کردن به کد بالا طرز کارشو کش٠کنید. در ضمن در x <= 10 اون علامت کوچکترمساوی هست. Ùقط یه نکته Ú©Ù‡ باید توجه کنید اینه Ú©Ù‡ برای Ú†Ú© کردن این Ú©Ù‡ x بین دو تا عدد هست مثلا اینجوری if 0 < x <= 10 then نمیتونیم بنویسیم. بلکه باید مثل بالا if 0 < x and x <= 10 بنویسیم (Ú©Ù‡ then درستش هم توی ریاضیات همین هست).


مثال دیگه: برنامه بنویسید که اسم یه آدم رو بگیره که اسامی شامل ali, jack, sara, mary هست. سپس جنسیت شخص مورد نظر رو چاپ کنه.

name = input()
 if name=="ali" or name=="jack" then
   print "Male"
 else if name=="sara" or name=="mary"
   print "Female"
 else
   print "I don't know"
 end
خوب در مثال قبل‌تری and رو دیده بودید، در این مثال or رو می‌بینیم که همون معنایی رو میده که شما به ذهنتون خطور میکنه. میگه «اگر نام برابر ali باشد یا نام برابر jack باشد آنگاه...». یک اشتباه که معمولاً برنامه‌نویسهای مبتدی می‌کنند ولی ما به عنوان مدعی‌های برنامه‌نویسی نمی‌کنیم، این هست که به جای شرط بالا می‌نویسند:

if name == "ali" or "jack" then ...
عبارت بالا کاملاً اشتباه هست! اگر کسی میخواد بدونه بگه ولی در حالت عادی توضیح نمیدم که چرا اشتباهه چون اگه بخوام بگم احتمالا مثل قبل پنج تا پاراگرا٠توضیح مینویسم ولی همهش مبهم بنابراین...


تا حالا از عملگرهای > Ùˆ < Ùˆ == توی شرطها استÙاده کرده بودیم ولی Ú©Ù„ عملگرها اینها هستند:

==  مساوی
 >   بزرگتر
 <   کوچکتر
 >=  بزرگتر یا مساوی
 <=  کوچکتر یا مساوی
 ~=  نا مساوی

در ضمن if Ùˆ هر بلوک دیگه رو میشه توی زبان‌های برنامه نویسی تودرتو کرد. مثال پیچیده: Ùرض کنید یه استاد دانشگاه میخواد نمره‌های پایان ترم دانشجوهاشو رد کنه. اگر دانشجویی قبول شده باشه استاد 2 نمره اضاÙÛŒ بهش میده، اما اگر دانشجویی رد شده باشه در صورتی Ú©Ù‡ اون دانشجو از دانشجوهای مورد علاقه استاد یعنی ali Ùˆ sara باشه بهش 5 نمره ارÙاق بکنه ولی از بقیه 2 نمره Ú©Ù… کنه! این برنامه باید اسم دانشجو Ùˆ نمره شو بگیره Ùˆ نمره نهایی رو پرینت کنه

name = input("Student name:")
 grade = tonumber(input("Student grade:"))
 if grade > 10 then
   grade = grade + 2
 else
   if name=="ali" or name=="sara" then
	 grade = grade + 5
   else
	 grade = grade - 2
   end
 end
 print("Final grade is ", grade)
تو کد بالا نام Ùˆ نمره رو در دو خط اول میگیریم، اگر نمره بزرگتر از 10 باشه یعنی دانشجو قبول شده باشه دو نمره به نمره اش اضاÙÙ‡ میکنیم. اما اگر نمره اش زیر 10 باشه، در صورتی Ú©Ù‡ نامش جزو نامهای مورد علاقه استاده هست 5 نمره میده Ùˆ در غیر اینصورت 2 نمره هم Ú©Ù… میکنه Ùˆ به التماس های اون‌ها توجهی نمیکنه Ùˆ در آخر هم نمره‌ی نهایی رو چاپ میکنه.

همون طور که میبیند درون قسمت else اولین if،‌ یه if دیگه با else و end مربوط به خودش گذاشتیم که کاملا درست هست. (گرچه در این مثال میتونستیم اون رو به صورت elseif ادامه‌ی همون if اول بنویسیم ولی همه جا نمیشه این کار رو کرد).

تورÙتگیهایی Ú©Ù‡ در کد میگذاریم (مثلا محتوای اولین if را با دو space میبریم جلو Ùˆ محتوای دومین if را با تعداد بیشتری Ùاصله میبریم جلو) در کد اختیاری هستند. ولی شدیداً توصیه میشود Ú©Ù‡ آنها را بگذارید چون اگه نگذارید شش ماه بعد برگردید به کد خودتون نگاه کنید هیچی ازش نمیÙهمید در صورتی Ú©Ù‡ اگر تورÙتگیها را رعایت کنید کد بسیار خواناتر میشه.


Ùˆ اما تمرین توی خونه! برنامه ای بنویسید Ú©Ù‡ مقدار a Ùˆ b Ùˆ c یک معادله درجه دوم به Ùرم ax2+bx+c=0 رو بگیره، ریشه‌های اون رو محاسبه Ùˆ چاپ کنه!

راهنمایی: صورت سوال بالا برای نوشتن این برنامه کاÙیه، ولی خوب الگوریتم اون رو اینجا توضیح میدیم: اول a Ùˆ b Ùˆ c رو می‌گیریم Ùˆ دلتا رو محاسبه می‌کنیم. حالا یهه if میخوایم Ú©Ù‡ اگر دلتا بزرگتر از صÙر باشه دو تا ریشه رو حساب کنه Ùˆ نشون بده، اگر صÙر باشه خوب یه ریشه داریم Ùˆ اگر منÙÛŒ باشه هم مثلا بگه «ریشه حقیقی ندارد». توی محاسبات هم Ú©Ù‡ باید جذر دلتا رو حساب کنید از تابع math.sqrt استÙاده کنید.


اگر داریم روی if اینقدر مانور میدیم علتش اینه Ú©Ù‡ از پایه‌ای ترین چیزها هست Ùˆ if رو بلد باشیم بلوک‌های for Ùˆ while هم راحت میشن. خدا بخواد از این پایه ای ها رد بشیم سرعت جلو رÙتن آموزش خیلی بالاتر میره.


جلسه بعد: for و while

  • saeed511, Ata.H.D, farahmand and 1 other like this


#63836 Review of the Casio fx-5800P

Posted by akuzmicich on 15 July 2021 - 10:53 PM

A couple of people asked me to review the humble Casio fx-5800P. Although it has some limitations its a great option for a day to day calculator if you don't need CAS or graphing. I wonder why Casio chose to only put it on the market in a small set of countries?

 

 

ps. Hlib2 if you read this I tried to follow a couple of your suggestions in the video.


  • Tritonio, MJim and Hlib2 like this


#63476 Calculator`s styling

Posted by Hlib2 on 03 September 2020 - 02:58 PM

An attractive appearance and a convenient, easy-to-read keyboard are important criteria for any calculator. I made an attempt to analyze the evolution of attitudes to this topic among various manufacturers.
1) These are classic representatives of calculators for high-paying consumers of the early 90`s: hp-48gx(~$1000)/ti-85(~$550). Approximate retail prices are given in the modern equivalent for 1993. For such a price, the manufacturer did not spare the paint for the letterings.
31529580_m.png

2) ti-85/fx-2.0. In 1999, CASIO released the fx-2.0 model(~$300 in modern equivalent). Note the size of the labels for x^2, 10^x and e^x on the left and right. This extravagance on the right did not extend further to arcsin, arccos etc. But in general, the inscriptions are quite satisfactory.
31529603_m.png

3) fx-2.0/graph25 from CASIO. The quality of the paint above the keys in graph25 is slightly better than in fx-2.0. However, to compensate for the cost, the letterings are either thinner or smaller. Visual perception has deteriorated.
31529631_m.png

4) graph25/fx-9850gb+. It seems that the price of paint exceeds the price of gold. According to some distributors, modern buyers can`t afford an extra $1 for the beauty in one calculator, so here we see another masterpiece of design thought.
31529640_m.png

5) ti-83+/ti-83+SE. Texas Instruments took care too of low-income engineers and students, saving on design. In the "Silver Edition"(sic!) the LCD was also "optimized" (by reducing its quality).
31529666_m.png

6) fx-991 classwiz(brand new)/(used). After several months of using the device in the production room and after a dozen wipes with a dry cloth from dirt, the inscriptions above the keys became unreadable. And then my talent as a graphic designer was awakened ...
31529667_m.png
  • piu58, MJim and ReinXXL like this


#63162 Vintage 1976 Casio fx-102 Scientific calculator review

Posted by MJim on 26 February 2020 - 04:59 AM

INTRODUCTION

I don't have that many truly old scientific calculators, and none using the old VFD display technology, so I was pretty interested to check out this old Casio Scientific fx-102 from 1976.  Accordingly this is one of the very first consumer calculators that had built in fraction support, which came as a bit of a surprise since I thought the fraction feature was something that came about well after the introduction of LCD based scientific calculators.

One price quoted for the fx-102 in 1976 is £23, which in todays 2020 money would equate to nearly ~£149 pounds.  This was pretty cheap for a scientific calculator back then (the programmable fx-201P was £60 in 1976 which is about the cost of a fairly high end smartphone at ~£388).

 

BUILD QUALITY

Well considering the age of this machine and the condition that it is in, top marks all around.  It doesn't look too far off from being new despite it's age of 40+ years.

It is however very big and bulky, and much larger than my fx-82 which was released only half a decade later.  With TN LCD displays already being in production at the time, offering lower power consumption and a smaller size, it isn't surprising that VFD displays eventually disappeared.

Front of the fx-102:

Spoiler

 

Rear of the fx-102:

Spoiler

 

 

POWER CONSUMPTION

The devices uses 4xAA batteries, and a power consumption figure of 0.4W is printed on the calculator.  However I did do a few tests using a fluke multimeter:

Power on current draw peak: ~43mA

Power off current draw peak: ~100mA (not sure why, switching off seems to draw more current).

Idle (Radians mode) displaying 0 average: 39.98mA (Min: 37.76mA, Max: 44.72mA)
Idle (Radians mode) displaying 8888 8888 88 average: 46.68mA (Min: 40.26mA, Max: 50.02mA)
Calculation current peak: ~50mA (Hard to measure without a function that works continuously).
Calculation voltage average: 5.72V (Min: 5.64V, Max: 5.95V)
Calculated peak power: 5.95V * 0.05A = 0.30W

Switching between different modes (Rad->Deg->Grad->SD) did not effect the current draw.

So I guess the 0.4W figure is fairly honest.  I can't locate a manual for the fx-102, but the fx-101 which has a 0.45W drain states a lifespan of 25 hours for alkaline batteries, but with the measured figures and the battery specs (Varta AA longlife alkaline) 30-40 hours doesn't seem all that unrealistic if the fx-102 can make use of all of the available battery capacity.


DIGITS/PRECISION

It is a 12 digit VFD, but it never seems to use the left most digit.  Normally, this calculator seems to handle up to 10 digits for both entry and accuracy.  This also means that for numbers big/small enough to require an exponent you actually only have 8 digits of precision, so a good deal of precision is lost once a number transitions to scientific notation, as the last 2 digits are lost in order to display the exponent.

Below is a list of the precision of different functions that I worked out from trial and error (the last digit will be +/-1 in most cases):
10 digits for independent memory (including M+ and M- operation)
10 digits for basic arithmetic (+,-,*,/)
10 digits for 1/x
10 digits for fractions
10 digits for DMS -> Decimal conversion

10 digits for pi constant (3.141592654)
10 digits for statistics functions

9 digits for square root
8 digits for base10 log, natural log, natural exponential, base10 exponent (Hidden 9th digit for rounding)
8 digits for trig functions: sin, cos, tan, arcsin, arccos, arctan (Hidden 9th digit for rounding)
8 digits for x^y function (2 steps, finds natural log of x, multiplies by y then finds e^(y*ln(x)) - Hidden 9th digit for rounding).

Having functions calculate with less precision than the displayable 10 digits does cause problems however.  For example, with the [x^y] function 2^32 should equal 4,294,967,296; which can also fit on the display of the fx-102 without any issue, but since only 8 digits are used, the last 2 digits are truncated returning 2^32 = 4,294,967,200.  One way to work around these problems is to avoid using x^y for any numbers greater than 8 digits, but this is rather inconvenient.  You could also break it down into smaller parts 2^24 * 2^8, but this requires not only doing the same equation twice over, but also storing the result in memory for each part and then finally multiplying the result at the end.

 

CONSTANT CALCULATION MODE

You can multiply or divide by a constant by either pressing the multiplication/division key twice in succession.  

This isn't quite as developed as later Casio models like the D-series (eg fx-100D, fx-115D, fx-991D), where you can also use add and subtract for constants (both real and complex) in addition to using [x^y] and [x^1/y] as constant functions (you specify y, and once set as constant, you can automatically execute these functions by entering for the x-value followed by [=]).  It still can be useful however:

For example if you were looking to find circumference of several circles with radius's of 1, 3 & 7.9 metres:
2×[pi] ×× {enter radius}
 6.283 185 308
1[=]
 6.283 185 308
3[=]
 18.84955592
7[.]9[=]
 49.63716393
 
Likewise, if you wished to find the radius from a given circumference of 6, 1, & pi metres:
2×[pi] ÷÷ {enter circumference}
 6.283 185 308
6[=]
 0.954 929 658
1[=]
 0.159154943
[pi]
 0.5

Only the [1/x], [Ab/c] and memory storage keys ( [MC], [MR], [M-], [M+]) can be used while remaining in constant mode.  Be aware though that if you want to store the result from a constant calculation, you need to enter the number and then press [M+] or [M-] key instead of pressing [=] then [M+]/[M-].  This saves an extra step, showing you the result in addition to storing it, but carries the disadvantage of not seeing the result first before storing it.


TIPS AND TRICKS

Use the [x^y] button instead of ln button for natural logs
The x^y function is odd in that it returns the natural log of the value for x you enter first, before you enter the value for y to complete the function.  However the natural log returned after entering x's value is of a higher 10 digit precision then the built in ln button! Since you can interrupt this calculation, use [x^y] instead of ln.  

Use the multiplication constant function for squares
Unfortunately the fx-102 is missing the squared function, and so squaring numbers is cumbersome, for example, 5^2: 5[x^y]2[=].  You can also use the constant function for multiplication and division instead: 5^2: 5××[=].

Now it's just as many key-presses to use [x^y], so you might ask why.  A good reason is that the [x^y] function has at best 8 digits of precision, while basic arithmetic operations including constant mode have 10 digits of precision (+/- 1 digit), so you get a more precise result for the same number of presses.

Alternatively, use statistics mode for squares
Switch to S.D mode, and then take advantage of the sum squared function:
5^2: 5[=][M+]
This has the advantage of requiring just 3 button presses, but since you need to switch to statistics mode, it isn't particularly practical. 

 

If however you are doing pythagorus type equations, statistics mode can actually save a bit of work, for example:

"The main tent pole in a conical tent is 3 metres high, and the radius of tent floor is 5 metres.  What is the length of the tent fabric stretching from from the tent pole to the floor?"
d = sqrt(3^2 + 5^2)

{switch to statistics mode}
3[=] 5[=] [M+]
 34
{switch to any other mode, GRAD being closest}
[sqrt]
 5.83095189
8 steps required
 
If we performed this in any other mode:
3[x^y]2[=][M+] 5[x^y]2[=][M+] [MR][sqrt]
 5.83095189
12 steps required


FRACTION FEATURE

I was already aware that Casio's fraction feature has 2 implementations, old and new.  The older version as found on my fx-100D (c1992) is only able to display fractions while all calculations are also in fraction form.  The newer version as found on my fx-991W (c1998) adds the ability to convert decimals to fractions (as long as the number of digits that make up the fraction including fraction marks don't exceed 10).

The Casio fx-102 is using a version of the older implementation, although it is restricted to only using 3 digits for each component of the fraction.  Furthermore, it is also limited to 10 digits total, including fraction marks, eg 123+45/678 (which will simplify to 123+15/226).  It does work pretty well however, so you can happily continue to add/subtract/multiply/divide in fraction form as long as doing so doesn't exceed 3 digits for any value and 8 digits total for improper fractions.

Unfortunately, this feature comes with a pretty big downside, and that is that any calculation involving fractions can not be stored in memory.  As long as any calculation has at one time made use of the fraction feature, you are unable to store that number, even if the fraction was used several calculations ago.  Since there are no brackets (or stack), this can make working with fractions problematic, as at no time can you store part of the result of an equation temporarily; for example for the equation  1/2*sin(30) + 1/4*sin(60), it is actually impossible to solve using fractions since you are unable to store the answer to the first part (1/2*sin(30)) before working on the second part.


QUICK TEARDOWN

For the age of the calculator I thought the soldering and traces were relatively neat.  There are two, single-sided PCB's, one for most of the important electronics the other for the keyboard.  Both boards are connected by several flat, copper wires.  I've opened this calculator up twice now, and these types of connectors make me rather nervous (I trashed my old SH3 fx-9750G2 by breaking something similar).  

Overhead view of the two PCB's:

Spoiler


Unfortunately while I know some basics, I'm not particular knowledgable on electronic circuits.  I don't know how VFD's (Vacuum fluorescent display) work, but a quick google suggests they need 2 different voltages, A lower voltage (3V) for the filament (heater) and a higher voltage (12V to 30V) for the segments themselves.  Since this works off 4xAA batteries I'm guessing that there is some sort of DC-DC voltage booster.  While looking at the photograph of the motherboard I noticed that there was actually a 3rd PCB just to the left of the Hitachi HD36130 CPU, my guess here would be that this is the DC-DC convertor that provides the higher voltage for the VFD display.

Main board:
Spoiler


They keyboard PCB looks fairly neatly soldered as well, although it's not hard to spot the repair that was done at some time in the past.  Pressing a button looks to short that button to ground.  There are 4 separate metal plates for the buttons, each with tabs that contact one of the 5 flat copper pads seen on the front of the keyboard PCB.  The 5th copper pad appears to connect to a metal spring which connect the metal face on the calculator to ground.  I've always wondered why older Casio calculators do this, would be interesting to get some insight.

Keyboard PCB rear:
Spoiler


Keyboard PCB front:
Spoiler
You can clearly see the 5 copper pads here.  For each button, a wire link is used as a contact surface.

Keyboard & Front cover inside:
Spoiler


Keyboard buttons and springs:
Spoiler
The same piece of sheet metal is shaped into springs for each button.  The plastic buttons use a different coloured plastic to make up the label on the button.  I've seen this on other Casio's and I guess it is pretty common for calculators, but it does seems to be a great way to provide label wear resistance.

CONCLUSION

Realistically this isn't the sort of scientific calculator I can see myself using in the modern age.  The next oldest calculator I have is the original Casio fx-82 from 1982 (6 years later), which is far more compact, much more energy efficient (0.4W vs 0.0007W, or nearly 600 times less power!) as well as adding much needed stacks in the form of parenthesis, rectangular to polar and polar to rectangular conversions, more constant operations and other functionality.  It doesn't however have the fraction key and it is slower, but considering the rate of progress with calculator technology today, it must of been crazy to witness the changes from the late 1970's to early 1980's.

While the fx-102 may not have much utility in modern times, it does still however provide an interesting insight into the evolution of some of the core Casio features that are standard on later models.  It has the same direct entry system and the early independent memory works much the same way even in modern calculators (M+/M-).  The core fraction entry and display is pretty much unchanged, though the fraction button will toggle between fraction and decimal display, rather than remaining stuck in decimal display.  The exponential button is pretty much unchanged, and the Sexagesmial conversion just added the ability to convert from Decimal back to DMS.  Finally the constant function would get a few enhancements and stick around for a little over 20 years, when it was finally mothballed with the introduction of the W-series S-VPAM models in 1998.


 


  • Tritonio, secutor and Hlib2 like this


#60412 FX-82/-83GT/-115/-991ES PLUS Hacking

Posted by SopaXorzTaker on 21 August 2016 - 05:27 PM

The following list was written by user202729 and serves as the guide to this forum thread.

 

 

 

Tutorial about ROP.

Javascript code to help with writing hackstring.

Character map image. Alternative version. Also available in the Javascript code above.

Scrolling text demonstration with video.

Calculator font.

How to enter a hackstring (991ES+) (less detailed version)

Hackstring used to dump the ROM. No longer needed now as we already have the ROM.

Datasheet contains some information about the hardware.

Hardware description: Part 1, part 2.

  * KI/KO ports (keyboard).
  * Timer: Part 1, part 2.
  * LCD screen.

Variable byte representation (no English translation this time).


High-level functions:

  * getkey

There are some outdated information about "real address" and "emulator address". Now we had the real ROM of the calculator that is not necessary.


  • flyingfisch, Viliami and anon34 like this


#60381 Casio Fx-9860G Sdk Tutorials (2016 Avaiable)

Posted by Viliami on 09 August 2016 - 06:55 AM

The Fx-9860gii SDK uses C by default (it also supports C++, SH4A and SH3 ASM), the SDK just uses the standard C with some extra functions for I/O and drawing. 

 

 

In the "fxlib.h" header file, there are a bunch of Bdisp functions, these functions deal with drawing pixels to the screen and clearing them.

e.g Bdisp_PutDisp_DD() is the function used to draw a pixel to the screen and Bdisp_AllClr_DD() is the function used to clear all the pixels from the screen.

 

There is a good tutorial created by Fez and reformatted by Helder7 about the Bdisp functions and basic I/O over here: http://www.casiopeia...php?f=20&t=1420

 

You can also download the official Casio docs on the fxlib library over here: http://edu.casio.com...greement.html#2

 

 

Here is a hello world program, most of this is auto-generated by the SDK when you create a new project:

/*****************************************************************/
/*                                                               */
/*   CASIO fx-9860G SDK Library                                  */
/*                                                               */
/*   File name : [ProjectName].c                                 */
/*                                                               */
/*   Copyright (c) 2006 CASIO COMPUTER CO., LTD.                 */
/*                                                               */
/*****************************************************************/

#include "fxlib.h"

//****************************************************************************
//  AddIn_main (Sample program main function)
//
//  param   :   isAppli   : 1 = This application is launched by MAIN MENU.
//                        : 0 = This application is launched by a strip in eACT application.
//
//              OptionNum : Strip number (0~3)
//                         (This parameter is only used when isAppli parameter is 0.)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************

int AddIn_main(int isAppli, unsigned short OptionNum)
{
    Bdisp_AllClr_DDVRAM();          // clear screen
    PrintXY(1,1,"Hello World!",0);  // print "Hello World!" to the VRAM
    Bdisp_PutDisp_DD();             // copy pixels from the VRAM to the actual display
    return 1;
}




//****************************************************************************
//**************                                              ****************
//**************                 Notice!                      ****************
//**************                                              ****************
//**************  Please do not change the following source.  ****************
//**************                                              ****************
//****************************************************************************


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section


#pragma section _TOP

//****************************************************************************
//  InitializeSystem
//
//  param   :   isAppli   : 1 = Application / 0 = eActivity
//              OptionNum : Option Number (only eActivity)
//
//  retval  :   1 = No error / 0 = Error
//
//****************************************************************************
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}

#pragma section


As you can see from above, there is no main() function, unlike standard C our entry point to the program isn't the main() function, it is the AddIn_Main() function.


  • flyingfisch, frankmar98 and saeedgolabli like this


#59479 Casio Prizm Mandelbrot Explorer

Posted by ProgrammerNerd on 11 September 2014 - 11:41 PM

The Mandelbrot fractal is quite a sight.
Such wonder and amazement that can be found while viewing the Mandelbrot fractal can now be had on the Casio Prizm graphing calculator.
In addition this program can also be compiled for the PC assuming SDL is installed.
Just run make and it will be up and running.
There is very little difference in function between the PC version and the casio prizm version, the resolution is higher but that is it.

The controls are
Left, right, up, down moves the window in that direction
Menu key or ESC on the PC, exits to the menu or exits the program (PC)
F1 sets maximum iterations to 65535
F2 sets the maximum iterations to 224 (this is the default upon starting the program)
F3 toggles deep mode which is on by default. This means you can zoom in deeper with a slight performance hit.
I do not notice the difference
1 subtracts one from the maximum iterations
2 adds one to the maximum iterations
3 subtracts ten from the maximum iterations
4 adds ten to the maximum iterations
5 subtracts 100 from the maximum iterations
6 adds 100 to the maximum iterations
Shift zooms in
Alpha (ALT on PC) zooms out
Source code https://github.com/C...-Prizm-Explorer
Binary https://github.com/C.../mandelbrot.g3a
Screen shots (from the PC version which gets very similar output differing only in resolution).
CWM8Ekp.png
0pNWIZX.png
Anyways if you have any bug report(s), feature request(s), pull request(s), patch(es) or whatever relates to this I would be happy to hear about them.


  • MicroPro, flyingfisch and Viliami like this


#57683 Using The Sdk

Posted by preb on 10 February 2013 - 06:26 PM

There are tutorials to write programs in Casio-Basic on here. Just use the search bar to find them :)
  • MicroPro, flyingfisch and abdelrahmanmostafa like this


#57532 Introduce Yourself

Posted by flyingfisch on 04 February 2013 - 10:32 PM

Name: Daniel, just call me Hyuji.

Birthday: 15 Feb

Age: 17(For now...)

Hobbies: Biking, Video Games (RPGs), Anime & Manga, Mathematics, Computers, Music(Rap)

Where you got your username: I'm lazy so I just took some grouped letters on the keyboard, that made sense, into a username. If you look on a QWERTY keyboard, you will see the letter H-Y-U-J-I all grouped together for easy typing. My password follows a similar principal.


O.o You sure you want to say that much about your password?

Anyway, welcome to UCF!

Hope you enjoy your stay. In the meantime, Ice Cream!

Posted Image
  • MicroPro, Casimo and naib864 like this


#57387 Like Own Post

Posted by Casimo on 31 January 2013 - 04:39 PM

It is possible to like the own posts. Is this a bug or a feature? I would say bug because you can incrase your like counter this way or bump your post in the most liked - section :P .
  • Casimo, naib864 and CalcLoverHK like this


#64195 KhiCAS Ableitungen

Posted by HappyCalc on 24 February 2023 - 12:38 PM

In KhiCAS you can either enter expressions in inline notation or mathematical notation.
KhiCAS will normally start in the inline mode. But you can enter the mathematical mode by pressing F3 (view).

As an example, I will use 2x³ + x²

To create a function, you can either enter

<expression>=><name>
2*x^3+x^2=>f

or

<name>:=<expression>
f:=2*x^3+x^2

or

<name>(<variable>):=<expression>
f(x):=2*x^3+x^2

then you can enter

<expression>'
f'

or if you used an other variable than x

diff(<expression>,<variable>)
diff(f,x)

that will result in

2*3*x^2+2*x

to simplify this, you can use

<expression>=>/

or

simplify(<expression>)

then you'll get

6*x^2+2*x

which is the derivative of 3x^3+2x^2. Great!

To sum up:

f:=3*x^2+x^2
fd:=f'=>/

fd will contain the derivative now.

 

If you used

f(x):=2*x^3+x^2

results will look different:

(x)->6*x^2+2*x

the (x)->... means, that you can use f(x) like a normal function:

You can calculate f(5) by just typing it in.
If you didn't use f(x):=..., you can calculate f(5) by typing

f(x=5)

You can enter the arrow '=>' by pressing the :->: button, the apostrophe ' by pressing F2 (calc) 1. The only way i know to get the colon ':' is by pressing Shift DEL and selecting it by hand. (There was another way in an earlier version, but I guess it was removed).

I hope that helps! :yawn:

(And I don't need a tip, I'm happy if I can help people with calculator stuff)


  • naluca and like this


#63278 OS Syscall disassembler

Posted by hejsotnoss on 26 March 2020 - 06:30 PM

Hi everyone,

 

I want to release a syscall disassembler that I wrote recently.

 

 

I put the code on my github page: https://github.com/h...ll-disassembler.

 

You can build with: gcc -Wall -Wextra -O2 syscall.c disassemble.c

 

The usage is: [binary OS file] [syscall]

 

For syscall strlen you can do:

./a.out 2_04_0200_sh4.fls AD6

 

and the program would return:

Syscall offset table: 0x801C7D88
Syscall offset: 0x80197670

Offset:         Code:        Instruction:
...
80197670:       A001         bra 0x001
80197672:       E500         mov #0x00,R5
80197674:       7501         add #0x01,R5
80197676:       6643         mov R4,R6
80197678:       6260         mov.b @R6,R2
8019767A:       2228         tst R2,R2
8019767C:       8FFA         bf/s 0xFA
8019767E:       7401         add #0x01,R4
80197680:       000B         rts
80197682:       6053         mov R5,R0
80197684:       7FF4         add #0xF4,R15
80197686:       1F51         mov.l R5,@(0x1,R15)
80197688:       6543         mov R4,R5
8019768A:       1F62         mov.l R6,@(0x2,R15)
8019768C:       51F1         mov.l @(0x1,R15),R1
8019768E:       A001         bra 0x001
80197690:       2F42         mov.l R4,@R15
80197692:       7501         add #0x01,R5
80197694:       6250         mov.b @R5,R2
80197696:       2228         tst R2,R2
80197698:       8BFB         bf 0xFB
8019769A:       A007         bra 0x007
8019769C:       E400         mov #0x00,R4
8019769E:       6214         mov.b @R1+,R2
801976A0:       6653         mov R5,R6
801976A2:       7501         add #0x01,R5
801976A4:       2228         tst R2,R2
801976A6:       8D04         bt/s 0x04
801976A8:       2620         mov.b R2,@R6
801976AA:       7401         add #0x01,R4
801976AC:       57F2         mov.l @(0x2,R15),R7
801976AE:       3472         cmp/hs R7,R4
801976B0:       8BF5         bf 0xF5
801976B2:       51F2         mov.l @(0x2,R15),R1
801976B4:       3412         cmp/hs R1,R4
801976B6:       8B01         bf 0x01
801976B8:       E200         mov #0x00,R2
801976BA:       2520         mov.b R2,@R5
801976BC:       60F2         mov.l @R15,R0
801976BE:       000B         rts
...

I can also release the code I wrote to generate the disassembler if anyone is interested.

I hope someone can find this useful :)

 

Thank you for reading,

 

hejsotnoss


  • TBit and jakiki6 like this


#62996 C.Basic - International Release

Posted by sentaro21 on 28 December 2019 - 07:07 AM

Sorry for late update.
Support for packed g1m/g3m will be available in the next version or later. :bow:
I'll fixes this year’s known bugs this year. :)
 
2.41 beta  for for 9860G/GII series/Graph 35+USB/35+EII/75/85/95 (SD)
 
1.41 beta for CG10/20/50/Graph90+E.
-Fixed the bug that the alpha mode icon was not displayed when line input mode.
-Includes the font manager and system manager of the system operation application by Colon.
(They are in the C.Basic_application folder in zip.)
(*These programs are password protected to prevent accidental editing of the source code due to heavy use of syscalls.)
(*You are free to modify the source code, but please do so at your own risk.)
 
---Same update---
-Fixed the "Graph (X,Y)=(" command bug that did not work when multiplying List with T as argument.
  (Example) Graph (X,Y)=(2*{1T,2T}, 3*{3T,4T})
-Fixed "ExitDM PopUp" bug that pop-up did not appear when exiting the debug mode and re-executing.
-Fixed the bug that garbage might be attached at the end of the program  when the indent function was enabled.
-Added integration function based on Gauss-Kronrod quadrature. (acapde's program has been implemented.)
 
(integration function) OPTN-F4(CALC)-F2(∫dx)
(format) ∫( f(x), lower limit, upper limit [,tol])
[,tol] 0<tol<1  this value is tolerance.
       1<tol    this valee is a significant digit.
       default [tol] is 10.
(example) ∫(2X^2+3X+4,1,5)
       result is 134.6666667
(example) ∫(sin X*cos X,0,1)
       result is 0.354036091
(example) ∫(cos ln X,0,1)
       "Not met Accuracy" pop up.
(example) ∫(cos ln X,0,1,5)
       result is 0.5
 

 


  • CalcLoverHK and acapde like this


#61776 CASIO fx-5800P, still going strong!

Posted by secutor on 20 June 2018 - 10:08 AM

Don't underestimate this little calculator. Except for graphics and string manipulations, the Casio Basic included has most of the features - including Getkey and Locate - found in the more expensive models. It has even a few features lacking from the graphics calculators:

To prompt for input, the normal way is:
"N"?-->N
Will display N? and store the input in variable N.

Casio fx-5800P also allows this:
"N"?N
Will display N? but also shows the variable N. If no change, then you can press EXE right away. Very handy!

It has a FILE key on the keyboard making it easy to run any program outside Program Mode. With my Casio fx-CG50 I have to switch to Linear Mode, then retrieve the Prog command from the catalog and finally type the program name on the keyboard enclosed in quotation marks. Very awkward.

Often used programs and formulas can also be added to a favorite List, another useful feature.

I also like the CALC and SOLVE keys available to quickly enter an equation and solve for any variable:
E.g. BMI=weight (kg)/height (m)^2

 

Type B-W/H^2, press SOLVE key, enter W and H, highlight B and press SOLVE again. Done!

The single AAA battery lasts one year if calculator is used 1 hour a day. It draws only 0.12W.

The biggest drawback is that it might be too slow for some. The same prime factorization program used on both the fx-5800P and fx-CG50 gives me:
N=6666666667 (19 x 1627 x 215659)

 

fx-5800P: 25.4 s
fx-CG50: 2.5 s

 

N.B. Casio fx-5800P gives the same precedence to multiplication, division and implicit multiplication. That's why

 

6/2(1+2) = 9

 

If you try this with a newer CASIO calculator (or one with updated firmware), you will get

 

6/2(1+2) = 1

 

As Casio now gives higher precedence to implicit multiplication, so it treats the above expression as:

 

6/(2(1+2))

 

The calculator was introduced in 2007, I really hope Casio could upgrade it with a faster processor, more memory and a PC-link.

 


  • Lonewolf and Tritonio like this


#59215 Complex Numbers Calculations

Posted by PsySc0rpi0n on 22 March 2014 - 01:00 PM

I got it...

Calculator automatically converts negative angles in their complementary values, meaning -102.7 = 257.3-360
  • MicroPro and flyingfisch like this


#58094 Windows 8?

Posted by MicroPro on 07 March 2013 - 05:50 PM

Actually Windows 8 is a transitional operating system. So we'd better wait and see what will Microsoft do with itself in the next version.
Without the start menu, it looks weird. There are already 3rd party start menu's out, though.

Generally, as someone who can confuse others by working with the computer very fast (look at my humility :blah: ), I find mouse much faster and convenient than touch screen. In my case, with touch screen, I have to jam my index finger while gazing at the screen to make it work. With mouse, you just move your wrist (and at the worst case your forearm) and everything gets done.
  • flyingfisch and Casimo like this


#55173 Electronic Interpret (Serial And Parallel)

Posted by sebest on 03 July 2012 - 01:08 AM

I wrote a program to solve series and parallel from for the fx9860. It is an interpreter, has some bugs, but I hope to fix in the future.

Run the program: "EC'ELECT"
load the impedances, for example
if you want to solve: [10//10//(8*2)]+10 put:

(10,10,8*2)+10

and solve 13.809

or 2//[((10+10)//50)+2] put:

(2,(10+10,50)+10)

solve = 1.8478

The program solve de parallel separete by "," and then sover the rest.

This program use the NUM2STR program (thanx for this to every body).

http://theview.57o9.org/OP%27PARAL.g1m

And very thanx to Forty-Two for help me, and host the file!!!!
  • MicroPro and flyingfisch like this


#27523 Cfx Games Slow, New Drawing Method

Posted by liquid on 12 March 2005 - 01:16 AM

Hey ive been programming my fx-9750G plus for a year now and the games ive made that use graph mode never use the F-Line function as its so slow(i made these games b4 link cable so they were deleted :( srry). Im just wondering why all the other cfx games on the web out there use F-Line. Using the stats mode to plot xy line graphs from points in a list is much faster, i just cant believe no one else has thought of this in their games and programs???
for example:
This program will make a star move around screen using direction buttons(could be replaced with a man to make a rpg like game?):

ViewWindow 1,127,0,63,1,0
FuncOff
S-WindMan
S-Gph1 DrawOn,xyline,list1,list2,1,Dot
{2,10,18,1,19,1}->List 1
{19,1,19,7,7,19}->List 2
-60->A:-28->B
Lbl 0
Getkey
Ans=0=>Goto 0
Ans=38=>A+10->A
Ans=27=>A-10->A
Ans=37=>B-10->B
Ans=28=>B-10->B
ViewWindow 1+A,127+A,0,63+B,1+B,0
DrawStat
Goto 0

If u try this out you will definatly see the advantage over F-line commands.
Its fast enougth that you wont even see the lines being drawn, they just appear :)
Using the method above, u dont even have to manipilate the list data as you just change the view-window parameters to move the object across the screen. This could be put to use in moving backgrounds made up of lines, or just simple sprites like a star or man.

If u want u can also do this by manipuilating the list data and not the view-window, but this will slow down as you get images/sprites made up of lots of points, so changing the view-window parameters is best for speed :).

An example of the advantage of this method would be to draw a background/map using this, then store it as background pict, then have a man/car/whatever move around the screen using the view-window method like above. You could even rotate the man/car/whatever by manipulating the lists with polar and rec commands.

So it would be cool if authors of cfx games now use this method, or update their games so the drawing is faster.

Another note, if you want to zoom backgrounds or sprites bigger and smaller or squash or stretch them, u can edit the viewwindow parameters, then drawstat which is very fast.

Another note, dont open the programs up in casiocomm as it doesnt recognise all the commands like S-Gph1 DrawOn,xyline,list1,list2,1,Dot, so it stuffs them up when u try to send them too ur calc. Ull have to transmit it with, but not open it for text editing in casio comm.
  • Viliami and frankmar98 like this