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


#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


#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 user202729 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


#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


#60369 Irc Bot Is Down!

Posted by PsySc0rpi0n on 06 July 2016 - 11:08 PM

The IRC bot is down for a while now! Please fix it! Thanks


  • Viliami and frankmar98 like this


#59640 Entering A Number In N, Then Enter Numbers N Times

Posted by Sheepolution on 30 October 2014 - 12:33 AM

"How many rows"?->N

For 1->I to N

"X"?->Matrix A[I,1]

"Y"?->Matrix A[I,2]

Next

 

Something like this?

 

I think you need to define the length of the matrix before hand, but I forgot how to do that at the moment.

Something like N->Dim Mat A

 

I think.


  • jasonphan and Ata.H.D like this


#58739 Calc Function In Fx-Cg10

Posted by Anandks on 11 September 2013 - 04:25 AM

Dear 3298,
Thanks for the reply and sorry for adressing casio fan, As the site says, "Newbie"
Yours is good solution and thanks for that.

Also a Gentleman from CASIO managed to answer this question and i would like to post his reply to me for those who interested.

Hello Anand,
If I understand your needs correctly, I believe the best option for you is to use the 'Equation' application on the fx-CG10. Once in 'Equation', select <F3> (Solver) and enter an equation something like Y = X + 2B + 6A - 20C. After you finish and press <EXE> you should see the entered variables appear beneath the equation, Y, X, B, A, C. Enter each value you know (A, B, C, X) and then highlight the value you would like to calculate (in this case, that's probably Y) and press <F6> (Solve).
I do hope that resolves your issue, but if you need further assistance or screenshots, please let me know.

Kind Regards,
Nathan
 
 
Nathan T. Austin
Curriculum & Online Training Manager
Education Division

CASIO AMERICA, INC.

  • abdelrahmanmostafa and Anandks like this


#58737 Calc Function In Fx-Cg10

Posted by 3298 on 10 September 2013 - 09:59 AM

So you want a "while true do" loop asking for variables and printing the result? Simply write that into a program, everything you can write in RUN-MAT is also valid in a program. For example:
While 1
"x"?->X
"B"?->B
"A"?->A
"C"?->C
2x+2B+6A-20C\Disp
WhileEnd
...where \Disp is the small triangle you find in Shift VARS. This program keeps asking for variables and displays the value of the function at the end of each iteration. AC/on quits the program.

Alternative solution if you already have all your variables in a table on a piece of paper: Go to the STAT menu, type all the values for your first variable into List 1, the values for the second variable into List 2, and so on. The lists should now look just like your table on the paper. Then move the cursor onto the top position of an unused list ("List xy" must be high-lit, not the name field or the cell for the first value), and type your formula while replacing each variable with the list that holds its values. Your example function would look like this:
2List 1+2List 2+6List 3-20List 4
The result is that this list will now hold all the results. Parallel processing with lists FTW :)


OFFTOPIC:
That number is really my nickname, "Casio Fan" is just a title that will change when I have more posts, just like it currently says "Newbie" for you.

  • abdelrahmanmostafa and Anandks like this


#58486 Introduce Yourself

Posted by flyingfisch on 06 May 2013 - 01:03 AM

Hi Thief_Of_Heart :)

Do you know any programming languages already?

Here is a good tutorial to start you out with programming on casio calcs: http://community.cas...1798#entry31798

And for news and help, feel free browse the forums or check out my blog, which has some helpful resources and a budding tutorials section. ;)
  • Casimo and Thief_Of_Heart like this


#57986 Beam V0.2

Posted by hayzel on 02 March 2013 - 07:41 PM

Just wanted to know, that mylib has now a new version (0.42)
It can be used to write your own programs for casio 9860.

mylib tries to simplify things in C, like string manipulation, dynamic structures, and gui elements. It is designed for simplicity in mind, and not speed, so many of the functions contained maybe suboptimal at best.

The description of the functions can be found in the command in mylib.h, and the example application named MYLIBT.c can be very helpful in understanding the mylib usage.

The library contains, debugging functions, screen dumping, information functions, dynamic Strings, StringLists,Dialogs with 2 simple callback mechanisms, DialogItems structs, display functions like Menus,questionBoxes,messageBoxes,multipleChoiceBoxes.
A new View struct that can be used to draw graphics or print text in double real coordinates.

obsolete to be upgraded functions:
matrixEditor,matrixDisplay

mylib version fixes info and download file with the example casio 9860 sdk project can be found here:

http://www.casiopeia...detail&df_id=86
  • MicroPro and Viliami like this


#57846 Help! Touchscreen On Classpad 330 Not Working!

Posted by Keinob on 20 February 2013 - 07:44 AM

Hi. I'm new in this forum and I had these problem with my calculator. I read this post and you haven't found a solution yet. I've done a research to find a solution and finally my calculator works again! I'ts a very simple method. You only need disarm your calculator and disconnect and separate the digitalizer. It's a glass on the LCD of your calculator. You only need to heat with a flame all sides of the glass only a few seconds and press them with your fingers to stick the plastic with the grass again and you'll se your classpad back to life! Use this video to help you.



I hope you can do it. Thanks and good luck!
  • MicroPro and javsalo like this


#56675 [Project Idea] Fastbasic

Posted by Casimo on 06 January 2013 - 04:34 PM

Hi,
I'm planning to make a faster basic-interpreter for the fx-series in c.
The idea: The interpreter uses the same code like the Casiobasic-interpreter. But instead of slow, useless functions I want to use fast ones, for example from Monochromelib or Revolutionfx. I also want to interpret the Send/Receive commands, so they would work.
That means we would play the same basic games like before - but faster and with better quality and new functions.
I already have some good ideas.

But I do not want to program this alone: I want it to be a team project.
So, who wants to join the project?
  • MicroPro and naib864 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


#53518 New G2 Models Arriving

Posted by noname11 on 23 December 2011 - 06:03 PM

The announcement also mentions a new supported function "Bkey_GetKeyWait", but I see the version is still 1.00. How can that be?

Because it's already in the SDK (used by GetKeyWait()), but no interface has been provided so far.

Here's a batch script that lets you extract Bkey_GetKeyWait() from the fx-9860G library:
@echo off

set "shc_lib=%programfiles%\casio\fx-9860g sdk\os"
set "sh_lnk=%shc_lib%\sh\bin\optlnk.exe"
set "fxlib=%shc_lib%\fx\lib\fx9860G_library.lib"

"%sh_lnk%" -library="%fxlib%" -list=modules.txt -form=library -output=temp.lib
"%sh_lnk%" -library="%fxlib%" -extract=_Bkey_GetKeyWait -form=object -output=Bkey_GetKeyWait.obj
del temp.lib

pause > nul
If you analyze this file with a disassembler then:
.section P, CODE
				.export _Bkey_GetKeyWait

_Bkey_GetKeyWait:
				mov.l   #h'80010070, r2
				mov.l   #h'247, r0
				jmp	 @r2
				nop

dword_8:		.data.l h'80010070
dword_C:		.data.l h'247
You'll see that Bkey_GetKeyWait() just makes a syscall (0x247) and that it has global scope (.export keyword).

So it should be sufficient to just add the function prototype to an include file:
int Bkey_GetKeyWait(int *code1, int *code2, int wait_type, int time, int menu, short *unused);

  • MicroPro and Casimo like this


#31796 Casio Basic Tutorial

Posted by huhn_m on 28 November 2005 - 05:03 PM

Part 13: Advanced Variables

Those of you who know other programming languages have probably seen a big problem in what you have read so far, what if you need more than 28 variables in your game? A long time ago (in a calc far, far away), when I was first learning to program I was making little games like Example 1 of this tutorial. But then I started trying to make some more complex games and I ran into a problem, I needed more variables and there were none to be found! Eventually I found the answer: Lists and Matrices.

Lists – A list is exactly that, a list of variables, they can be up to 255 cells long.
Here is a visual of a list with 5 cells:
[ ]
[ ]
[ ]
[ ]
[ ]
to access a cell in a list you just use List #[#] (List 11), the first # represents the number of the list and the second represents the index of the cell. You can use Lists just like you use normal variables, anything you can do with a letter variable you can do to a list, you just have to specify what list and what cell.

Some special list functions:
X->Dim List # : creates a list with X cells in it, all cells are set to 0.
Fill(X,List #) : fills a list with X.
There are others, but you probably wont use them.

Matrices – A matrix is a two dimensional list
Here is a visual of a 5x4 matrix.
[ ][ ][ ][ ]
[ ][ ][ ][ ]
[ ][ ][ ][ ]
[ ][ ][ ][ ]
[ ][ ][ ][ ]
Matrices are just like lists except that they are two dimensional, I like to use them for maps, especially tiled maps. To use a matrix use Mat (letter A~Z)[Y,X] (Mat A[1,1]), the X and Y are reversed, make sure not to confuse them.

Special Matrix functions:
{Y,X}->Dim Mat (letter) : creates a YxX matrix
Fill(#,Mat (letter)) : fills a matrix with a #
Again, there are more, but you wont need them right now.

Tip: List and Matrices are very useful for loops, since they are indexed you can loop through them or use List 1[A] so you can change what list cell you are using dynamically. Also note that you cannot do this with the number of the list.

Return to Tutorial Index
  • PsySc0rpi0n and frankmar98 like this