Difference between revisions of "Malical"

From Casio Universal Wiki
Jump to: navigation, search
(Examples to explain)
(Examples to explain)
Line 131: Line 131:
 
==Examples to explain==
 
==Examples to explain==
 
This exemples are available in the Malical.rar package.
 
This exemples are available in the Malical.rar package.
 +
 +
Many of these examples the procedure can be extended, such as clock can do better Aspect (clockwise bold, with numbers, etc.), functions in a multi-point. The procedure of drawing a line can be expanded to draw a rectangle, circle. The periodic table of elements can be coupled with the Find function. Look forward to more of your work!
  
 
===Get a key key code (key.mcl)===
 
===Get a key key code (key.mcl)===

Revision as of 18:05, June 6, 2012

This page needs your knowledge


What is Malical?

Malical is a powerful language for casio fx9860 series that combines the facility of the Casio Basic with the speed and robustness of C/Asm.

The currently malical version is 2.5, but the developers, Diameter and Wudy.F89 are working in a new update (3.0) with more functions!

Vantages of using Malical

This language is more faster than LuaFx, and you can program OnCalc. Other vantage face to LuaFX is that the malical program files do not need to be compiled!

Furthermore this language has the speed and robustness of C/Asm but is more easy to learn! You can use some tipical SDK functions like print mini, overclock, rtc, ... using this language!

Getting Started

You can download the latest malical build here, and you can discuss about this project in this forum topic.

Install Malical on Calc

Please connect the calculator to the computer, and drag and drop the the file MALICAL2.G1A, to the FA-124 like the image below:
Mal-fa124.png
Then copy MALICAL2.G1A to your 9860 calculator.

In order to edit Malical Source files(*.mcl) on your fx9860 calc, you need download EDIT.G1A. Of course, you can edit the source files on the computer, it is plain text.

After the installation is complete, you should see the following interface:
Malical-c-menu.png

Making a Hello world!

Please open the EDIT to create a new document in Storage Mem with the extension .MCL (Warning: You should not create this file in Main Mem).
Edit-mcl.png
And write this code in the file:

::main
locate[1][1]
print ["Hello world!"]
waitkey[30004]
::end


(PS: the edit can adjust the font size, and small print on the screen for you can see more code, it is recommended to use small print, set the font size optn other Word the wrap also recommended the election off, as shown below)

Edit-settings.png

Input as follows

Test.mcl.png

Exit Edit and open Malical:

Malical-prog-list-test.png

Run the program and calc will display the following screen:

Malical-hello-world.png

Press the exe to exit!

First in TEST.MCL we define the main function (each Malical are the main function as a starting point), use the locate function (used for positioning the string output location), the print function (output string) and waitkey function ( of which 30004 exe key code). If you do not waitkey, the program will flash off (can be removed to try). waitkey the role, the program waits until the user presses the 30004 on behalf of the keys.

Variable, the expression

Malical, var <variable table ...> (for example: var [a] [b] [c]) to declare a variable. (Some language) Malical variable type, the only type of the value of the variable. During operation variable can be assigned to any type of value. Variables declared outside the function is a global variable can be shared, global declared within the function can only be used during the function call. The value of the type:NIL, STRING, NUMBER, ARRAY.

NIL type

Malical using nil represents a null value nil is the unique value of NIL type

STRING type

String. Example: "Hello World!", "12332132adasd
Supported operators: + ==

NUMBER type

Floating-point number Example: 0.1321、3.1415926 Supported operators:+ - * / ^ %(Modulo) == > >= < <= and、or、not

ARRAY type

Data collection (array), in which each element value can be any type. Array using the subscript ("[" "]") access. {Value table...} construct.
Example:

var [a]
a = {[1][2][{}][ "mailcal"]}
print [a[0]] 
# Output 1.000000

Malical in the assignment operator "=" Example: a = 1 a = a+1 a = a^2 a = {} (A is an array, but there is not any element, use the array manipulation functions (such as the push) before such assignment).

The control structure

Malical offers two control structures:

IF statement

if con
    stmt
[else
stmt]
end

Which else part is optional, the type of con must be a number (0 for false, non-zero is true)

WHILE statements

while con
    stmt
end
com

The requirements of the if statement

Functions

Defined functions in the following ways in Malical

:: <Function name> <parameter list> 
<Statement> 
:: End 

Such as:

:: double [x] 
return x*2 
:: End

Return which return a value, if not followed by the expression, then do not return any value, but will end the execution of the function.

Library function is introduced to see in the Malical_library.

Examples to explain

This exemples are available in the Malical.rar package.

Many of these examples the procedure can be extended, such as clock can do better Aspect (clockwise bold, with numbers, etc.), functions in a multi-point. The procedure of drawing a line can be expanded to draw a rectangle, circle. The periodic table of elements can be coupled with the Find function. Look forward to more of your work!

Get a key key code (key.mcl)

Programming to use the key code can use this program for, pay attention to the 1 key. Press to return to a code directly, press shift and then return to the list of code, according to the alpha and then press return 'u' code. s hift-alpha open letter lock and return the letter code.

  Printnum the introduction of detailed function in library.doc

Square root (sqrt.mcl)

The third line, if val [gets, [1] [1]], can only enter a number, if you use eval [gets [1] [1]] can enter the expression. (Eg, input 229-8, val return 229, the eval returns 221) waitkey the role of the previous example.

Circle (circle.mcl)

Draw a circle to waitkey.

Character output (Chinese.mcl)

Shows usage showap (show array picture), showap specific instructions to see the library. Note that the image initialization can not be too long and will be a system error. Push function + multiple arrays can be used to implement the initialization of the big picture

Mouse (mouse.mcl)

With memory, you can write the program: the beginning of the loop, all rub now painting, the loop ends, see the following detailed line drawing program.

Drawing a line (draw.mcl)

1,2,3,4,6,7,8,9 a large range to move the cursor up and down a small area over 5 to determine the endpoint of a line segment L ineset storage four parameters of each straight line. The cycle began painting mouse detection button, rub the whole, with a re-draw the line, the loop ends.

Clock (clock.mcl)

Achieve a clock. AC key launch, +, - adjust the hour / minute tune. Half if the getkey, the program is running stuck use the iskeydown here can solve the problem, and can hold the shells, do not click about. Iskeydown general use in the game. Note that this time the menu to return to the main menu is useless to write the if iskeydown menu button code] ....

Overclocking (cpuspeed.mcl)

The F1 ~ the F6 key codes is continuous, so

while (key < 30009 or key > 30014)
 key = getkey
 	end
cpuspeed[(key-30008)%5] 

The cpuspeed Results Shao See the end of the library. Note 2 times overclocking can not be directly four times, first the reset. (Or stuck)

Decomposition quality factor (fact.mcl)

There is a characteristic of L, ocate before the locate [1] [1], for example the cursor to 1,1, then the print ["256"], the cursor will automatically move to 1,4, which can bring great convenience to the output.

3D mapping (3dfun.mcl)

Do menu can refer to this program

Of the periodic table (periodic.mcl)

Show the usage savedisp and rcldisp, program initialization, in order to use savedisp save 5 pages (including 3 main interface, each one of the lanthanide and actinide) are operating in the Memory Lane, so screen has been displayed the initialing ..., then when needed with rcldisp show, so to avoid the repeated drawing speed, reducing programming complexity. The suffix _spe function is the operation of lanthanide and actinide.