Full Version: Project: Cplua
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
Orwell
Okay, let's try again biggrin.gif

CPLua 0.8 RC2 fixes all the bugs you reported, and some other ones (the interactive mode for example was completely unusable dry.gif )

Thanks again for your help smile.gif
PAP
QUOTE (Orwell @ Feb 27 2006, 11:15 PM) *
Okay, let's try again biggrin.gif
Seems to be ok now smile.gif.

QUOTE (Orwell @ Feb 27 2006, 04:02 PM) *
Actually I used DLMFit as benchmark to check the gain in performances concerning the memory usage wink2.gif
Note that the problem with those programs don't really come from the garbage collection; it's just that LuaNumAn is rather large, and each chunk loaded in Lua requires a lot of memory (3 to 5 times its size as source code! blink.gif ).
DLMfit has two examples for curve fitting. It defines and uses rather large matrices, and it requires several library chunks, so it is currently a "memory devourer". Loading library chunks is unavoidable, if you want to write well-structured programs, so I'm afraid that DLMfit's memory demands cannot be reduced. Glad to know that it also helps as a check program.

QUOTE (Orwell @ Feb 27 2006, 04:02 PM) *
Btw, I noticed that you allways load the libraries at the beginning of each chunk. That means that even if you use a function at the very end of the program (LuaPlot for example), you reserve a lot of memory for it at the beginning, hence the memory crashes. Maybe you should consider using doscript() instead of require() for functions like LuaPlot: you may also pass some arguments to the called script, and return some value, but the advantage is that you only load the chunk when you really need it wink2.gif require() could also be used near the end of a program, not only at the beggining.
I have thought about this several times, but I think that loading all the chunks from the beginning helps the user to easily find the dependencies of the program. Loading each chunk just where it is needed is also a good programming habit; for example require("LuaPlot/PlotFunc") can be placed just before the first call of PlotFunc function. However, the user will need to search the whole program just to find the dependencies (and, currently, there is no a "Find" capability sad.gif). Furthermore, I don't know what will happen if require("LuaPlot/PlotFunc") is whithin a loop...

QUOTE (Orwell @ Feb 27 2006, 04:02 PM) *
It's just a file containing your preferences: the keyboard and the font you choosed (there will certainly be more options later). It is saved each time you close CPLua. I'm sorry about this, but I didn't have many choices wink2.gif
As I suspected. No problem for me. Better than setting your preferences each time you open CPLua.

QUOTE (Orwell @ Feb 27 2006, 04:02 PM) *
If you just want to exchange Lua programs with text files on the computer, you can copy/paste the code from the emulator... huh.gif Note there will never be a "magic tool" to transform a MCS files with Lua programs (even saved as TEXT variables) into a simple txt file on the computer... sad.gif You will allways have to deal through the emulator. I agree it could be convenient to be able to save the output of a program however.
Aaargh! Can you believe this? I didn't knew that you can mark, copy and paste text directly from the emulator banghead.gif. To be honest, I don't use the emulator much (just to take screenshots).
Kilburn
If I understand, you want to save the output of a program in a .TXT file. In that case, why don't you use Windows functions from fstream in the add-in (only for Windows, I am not stupid)? This doesn't work?
Orwell
QUOTE (PAP @ Feb 28 2006, 03:47 PM) *
Seems to be ok now smile.gif.
Kilburn noticed some other bugs in RC2, and I fixed it. There should be a new RC3 version soon, but I will wait a little to see if someone else encoutered problems with the RC2 wink2.gif

QUOTE (PAP @ Feb 28 2006, 03:47 PM) *
Aaargh! Can you believe this? I didn't knew that you can mark, copy and paste text directly from the emulator banghead.gif. To be honest, I don't use the emulator much (just to take screenshots).
Well, I was suspecting it lol2.gif

QUOTE
If I understand, you want to save the output of a program in a .TXT file. In that case, why don't you use Windows functions from fstream in the add-in
I suppose the goal is to save the output of programs running on the classpad, more than on the emulator... unsure.gif
However, if you really want it I could perhaps add an import/export facility in the editor (on the emulator only) to open or save an ordinar Lua program in a computer's txt file... I'll think about that smile.gif
Note that you could simply use copy/paste between the emulator and the notepad though.
MicroPro
What does "RC" mean?
PAP
QUOTE (MicroPro Programmer @ Mar 1 2006, 02:39 PM) *
What does "RC" mean?
"Release Candidate". It's a very common abbreviation in version numbering schemes wink2.gif. Another option is "pre", which means "pre-release". Both are handy, although I personally don't like abbreviations.
Orwell
I hope it will be the last version until CPLua 0.8 final wink2.gif

Download CPLua 0.8 RC3 smile.gif
Orwell
Since there were no new bugs for several days, I think that CPLua 0.8 (final) will be released soon smile.gif

There was a last bug in CPLua 0.8 RC3 though: if an error occurs in a chunk called with require or doscript, it doesn't stop the main program; it just continues after the call. This can lead to some strange situations, but it has already been fixed for the next version wink2.gif
MicroPro
Some suggestions (if you won't become unhappy):
1. Did you add a function for calling Main, orwell? (e.g ShowMainWindow). It is useful... We can create a math program that at the top section Lua's output says what to do, and we write our calcs in the bottom part that is the Main window.
2. Please enable lua to access the Variable Manager... The open and save dialogs are good, but they don't show the file's size.
3. Step-by-step debugging.
4. (The most important one) Why don't you upload CPLua to classpad.org? It can be a good advertisement for Lua (and for the ClassPad forums).
Thanks, bye. smile.gif
PAP
QUOTE (MicroPro Programmer @ Mar 7 2006, 04:11 PM) *
Some suggestions (if you won't become unhappy):
Although I'm not Orwell, I think I have something to say:

QUOTE (MicroPro Programmer @ Mar 7 2006, 04:11 PM) *
1. Did you add a function for calling Main, orwell? (e.g ShowMainWindow). It is useful... We can create a math program that at the top section Lua's output says what to do, and we write our calcs in the bottom part that is the Main window.
I'm afraid that I don't understand, or you are confused a little bit... You can "write your calcs" in the input window, which is enabled by the "input" function. Currently, the input window is restricted to one-line, at the bottom of the screen.

QUOTE (MicroPro Programmer @ Mar 7 2006, 04:11 PM) *
2. Please enable lua to access the Variable Manager... The open and save dialogs are good, but they don't show the file's size.
Sounds useful. Note, that this is for user's information only; CPLua has full access to user (or system) variables, via the "cas" function.

QUOTE (MicroPro Programmer @ Mar 7 2006, 04:11 PM) *
4. (The most important one) Why don't you upload CPLua to classpad.org? It can be a good advertisement for Lua (and for the ClassPad forums).
This subject has been discussed several months ago. Orwell said that he will not upload CPLua to classpad.org until it reaches version 1.
-Tom-
Hi! My problem is concerning IO package... its cannot make a list of directories in Root Directory... what I need is fold:content() which lists folders. Is it possible to do it? (options are: list of folders or access to variables manager)

About MainWindow... PAP You are right... there is input line, but we can all agree that one line calculation is not enough. I know, You can say now that Lua should do the calculations, but in my case I often need to pre-calculate something before I can feed a program with data.
Orwell
QUOTE (MicroPro Programmer @ Mar 7 2006, 03:11 PM) *
1. Did you add a function for calling Main, orwell? (e.g ShowMainWindow). It is useful... We can create a math program that at the top section Lua's output says what to do, and we write our calcs in the bottom part that is the Main window.
I see what you want, but it is very difficult to do... sad.gif When I started CPLua I decided to use my own system to manage the different windows (main menu, edition, console...) instead of the standard system used by the other applications. It is now quite easier to handle windows with this, and it allows some other interesting features (custom keypads, full screen, ...), so I think that it was a good choice; however I can't display a window that uses the standard system (like the Main Application) anymore sad.gif
However, I don't think that it's completely impossible to do, but this would take time wink2.gif

QUOTE (MicroPro Programmer @ Mar 7 2006, 03:11 PM) *
2. Please enable lua to access the Variable Manager... The open and save dialogs are good, but they don't show the file's size.
It's already done since CPLua 0.8 RC1 ... Look in the "Settings" menu, there is an option to open the Variable manager smile.gif

QUOTE (MicroPro Programmer @ Mar 7 2006, 03:11 PM) *
3. Step-by-step debugging.
It is possible to create a debugger, and there 2 ways to do that.
1) convert the standard "debug" package to CPLua; it is currently disabled, but I hope that it won't be too hard due to CPlua's specifications (like chunk isolation etc)... I will take a look.
2) use some hacks to break the execution between each line, or between each instructions etc, and display information about the current existing variables, the environment... This would be a real debugger. I shouldn't be too hard (Lua allows that); however, the screen of the ClassPad isn't very large and I don't know how I should display all these informations lmao.gif
I need your ideas and opinions about this rolleyes.gif

QUOTE (MicroPro Programmer @ Mar 7 2006, 03:11 PM) *
4. (The most important one) Why don't you upload CPLua to classpad.org? It can be a good advertisement for Lua (and for the ClassPad forums).
Like PAP said, I would like to wait the first official version. I don't want too many people to start some big projects, and be forced to modify it between each major release because of some new incompatibilities.
But don't worry, CPlua 1.0 should come soon; I don't think that there will be many structural changes after CPLua 0.8 (but if you think about some large improvements or important modifications, say it NOW! ) wink2.gif


QUOTE
Hi! My problem is concerning IO package... its cannot make a list of directories in Root Directory... what I need is fold:content() which lists folders. Is it possible to do it? (options are: list of folders or access to variables manager)
Whoops, it seems like there are still some functions in this package waiting to be implemented. blush.gif I'll see what I can do wink2.gif

About the Main Window again: remember that you can use the CAS package to create variables and save their values... You could for example write a Lua program that creates a list in the variable manager, and use this list for some later calculations in the Main Window smile.gif I know that it's less handy, but it's better than nothing wink2.gif
Orwell
QUOTE (Orwell @ Mar 7 2006, 07:01 PM) *
Like PAP said, I would like to wait the first official version. I don't want too many people to start some big projects, and be forced to modify it between each major release because of some new incompatibilities.
But don't worry, CPlua 1.0 should come soon; I don't think that there will be many structural changes after CPLua 0.8 (but if you think about some large improvements or important modifications, say it NOW! ) wink2.gif

I would like to insist on this a little bit more: If you think that something could be made in another, more comfortable way (for example, you have a better idea for the menu that appears when you open CPLua laugh.gif ), please say it, it's not too late wink2.gif
-Tom-
Using occasion: searching/replacing ability should be developed in editor.
Was You thinking about this My Lua Programs (for faster programs launching) ?
Kilburn
QUOTE (-Tom- @ Mar 7 2006, 09:06 PM) *
Was You thinking about this My Lua Programs (for faster programs launching) ?


Were you thinking.... no? lmao.gif
This has be already asked, I think this is not impossible to implement.

And there is a strange problem about the draw.line function that was here since CPLua 0.6. In the Scribble example program, il you set the drawing thickness to 3 or higher, the lines doesn't draw correctly.... blink.gif
Orwell
QUOTE (Kilburn @ Mar 7 2006, 09:28 PM) *
Were you thinking.... no? lmao.gif
Many people here (like the two of us too) have a native language which is different from English. We are all doing our best to be understood by the others, but some people may have more difficulties than the others. I think that such comments should be avoided, if possible. dry.gif
And Kilburn, I'm sorry to say that, but it seems like the mean age of people here is 19~20 year old (or maybe older). Why do you allways make us remember that you're only 14? Sometimes a more mature behavior would be welcome wink2.gif
PAP
QUOTE (Orwell @ Mar 7 2006, 08:10 PM) *
It is possible to create a debugger, and there 2 ways to do that.
1) convert the standard "debug" package to CPLua; it is currently disabled, but I hope that it won't be too hard due to CPlua's specifications (like chunk isolation etc)... I will take a look.
2) use some hacks to break the execution between each line, or between each instructions etc, and display information about the current existing variables, the environment... This would be a real debugger. I shouldn't be too hard (Lua allows that); however, the screen of the ClassPad isn't very large and I don't know how I should display all these informations lmao.gif
I need your ideas and opinions about this rolleyes.gif
I think that a "pause" command will be sufficient. We can use it to temporarily suspend program execution, and enter the "interactive" mode. Note that this should be a "dedicated" interactive mode, able to access variables of the chunk being run. This way we will be able to inspect the values of variables, by using standard CPLua functions in the interactive mode (such as print or table.foreach), or to assign new values to the variables. Then a "resume" command will return CPLua to normal program execution, until another "pause" command is reached. This functionality is similar to the "breakpoints" used in all developement packages. It will not be a "real" debugger, but it will be very useful, and it seems easier to implement.

QUOTE (-Tom- @ Mar 7 2006, 10:06 PM) *
searching/replacing ability should be developed in editor.
IMHO, this should be considered as the first thing in the "to do" list. However, I'm afraid that it is not as easy as it looks. Orwell, what do you think?

QUOTE (Kilburn @ Mar 7 2006, 10:28 PM) *
And there is a strange problem about the draw.line function that was here since CPLua 0.6. In the Scribble example program, il you set the drawing thickness to 3 or higher, the lines doesn't draw correctly.... blink.gif
I noticed this problem only recently, since I don't use thick lines often. When I implemented LuaPlot (4 months ago), it was possible to use line thicknesses of 3 or more pixels. Now, such thick lines are not drawn correctly. This is probably a bug in the "draw" package.
Btw, is it possible to add another optional argument in the "line" function, so that dashed lines will be available?

QUOTE (Orwell @ Mar 7 2006, 11:16 PM) *
Many people here (like the two of us too) have a native language which is different from English. We are all doing our best to be understood by the others, but some people may have more difficulties than the others. I think that such comments should be avoided, if possible. dry.gif
I totally agree. English is not a very rich language, anyway.
MicroPro
QUOTE
Accessing Variable Manager is already done since CPLua 0.8 RC1
blush.gif Yes, I saw it, thanks.

QUOTE
It is possible to create a debugger, and there 2 ways to do that:
...
However, the screen of the ClassPad isn't very large and I don't know how I should display all these informations.
I need your ideas and opinions about this
Maybe:
ShowMsg("Var1:"..FirstVar.."\nVar2:"..SecondVar)
It shows a message box. How do you think about it?

QUOTE
I will take a look.
Again thanks.

And a question:
Is there a Wait function in Lua? Or I still must use "for x=0,1000 do end" for wait?
Kilburn
QUOTE (MicroPro Programmer @ Mar 8 2006, 09:39 AM) *
Is there a Wait function in Lua? Or I still must use "for x=0,1000 do end" for wait?


No... sad.gif

And for the debugger, you could make a simple function debug() that displays a big dialog window with all the variables used and their values. Is that possible? And assign a "debug" key that will be never used in the program, so if you define EXE as the debug key, when you press EXE, the executions breaks and the dialog window appears.
Orwell
QUOTE (PAP @ Mar 8 2006, 12:21 AM) *
I think that a "pause" command will be sufficient. We can use it to temporarily suspend program execution, and enter the "interactive" mode. Note that this should be a "dedicated" interactive mode, able to access variables of the chunk being run. This way we will be able to inspect the values of variables, by using standard CPLua functions in the interactive mode (such as print or table.foreach), or to assign new values to the variables. Then a "resume" command will return CPLua to normal program execution, until another "pause" command is reached.
QUOTE (Kilburn @ Mar 8 2006, 09:12 PM) *
And for the debugger, you could make a simple function debug() that displays a big dialog window with all the variables used and their values. Is that possible? And assign a "debug" key that will be never used in the program, so if you define EXE as the debug key, when you press EXE, the executions breaks and the dialog window appears.
Okay I will first try to convert the standard "debug" package then smile.gif
The idea concerning a "debug key" sounds interesting, but which key would you suggest? unsure.gif

QUOTE (PAP @ Mar 8 2006, 12:21 AM) *
IMHO, this should be considered as the first thing in the "to do" list. However, I'm afraid that it is not as easy as it looks. Orwell, what do you think?
What do I think? I think that it's a real nightmare cry.gif But if you really need it, I'll try... dry.gif

QUOTE (MicroPro Programmer @ Mar 8 2006, 09:39 AM) *
ShowMsg("Var1:"..FirstVar.."\nVar2:"..SecondVar)
It shows a message box. How do you think about it?
It is certainly useful, not only for debugging; but this should be a part of a future "UI" package wink2.gif

QUOTE (MicroPro Programmer @ Mar 8 2006, 09:39 AM) *
Is there a Wait function in Lua? Or I still must use "for x=0,1000 do end" for wait?
I can't implement such a function with the SDK (at least for now)... sad.gif Or maybe only for an entire number of seconds (e.g. wait(5) = wait 5 seconds). I don't have currently any way to measure time with a better precision. wink2.gif
Kilburn
QUOTE (Orwell @ Mar 9 2006, 10:28 AM) *
The idea concerning a "debug key" sounds interesting, but which key would you suggest? unsure.gif


A function like setdebugkey(key_code) smile.gif Or a Debug button on the toolbar, near Break.
Kilburn
QUOTE (Orwell @ Mar 9 2006, 10:28 AM) *
I don't have currently any way to measure time with a better precision. wink2.gif


SH3Timers could be used, but it's an unsupported featureand it doesn't work on PC. sad.gif Maybe there is a Windows timer...
narmo
I've found a bug:
CODE
for a = 0, 10, 0.1 do
if a == 1 then
  print("found")
end
end

Never prints "found" although it should. I think it's a problem with float numbers.
PAP
QUOTE (narmo @ Mar 19 2006, 06:58 PM) *
I've found a bug:
CODE
for a = 0, 10, 0.1 do
if a == 1 then
  print("found")
end
end

Never prints "found" although it should. I think it's a problem with float numbers.
This is not a bug, actually. It's a common problem with computer arithmetics: 0.9+0.1 is not necessarily equal to 1. It may be 0.9999999999 or 1.000000000001, due to the way float numbers are stored in memory. You should never compare float numbers this way. Just replace a==1 with math.abs(a-1)<tiny, where tiny is a small number, e.g., 1e-7. Note that the same problem is present in every computer system.
narmo
You're right, thanks.
Orwell
Indeed, I can't help it at all... sad.gif
However, you don't have this problem with the other ClassPad applications, because it uses BCD numbers instead of float numbers. But this uses a lot more memory and is considerably slower.

Users who want to work with true precision should consider the CAS package, which uses BCD numbers... Btw I just saw that comparators ( <, >=, etc) between CAS objects would be useful too for that kind of problems, I will take a look on it.
-Tom-
Why this works fine:
QUOTE
require "dane"

function wydruk(wiersz,kol)
for i=wiersz,wiersz+8 do
print(tab1[i][kol])
end
end

a=5.2
b=-3

wydruk(a-0.2,b+6)


And this not:

QUOTE
require "dane"

function wydruk(wiersz,kol)
for i=wiersz,wiersz+8 do
print(tab1[i][kol])
end
end

a=input()
b=-3

wydruk(a-0.2,b+6)



"tab1" is a large 2 dimensional table stored in "dane"

blink.gif
Kilburn
This should work. wink2.gif

CODE
require "dane"

function wydruk(wiersz,kol)
for i=wiersz,wiersz+8 do
print(tab1[i][kol])
end
end

a=input()
b=-3

a=tonumber(a)

wydruk(a-0.2,b+6)
Orwell
input() allways returns a string, if you want to use it as a number you shoud use tonumber() like Kilburn suggested.

Be careful with CPLua 0.8C: there could be an error in your script "dane", and CPLua won't raise any error; it will just stop its execution and continues after the call to require. This is really annoying and has been corrected for the next version that I must release quickly banghead.gif
-Tom-
Ok, with tonumber() I just forgottent put it here in this example, but look at this:

QUOTE
require "dane"

function wydruk(wiersz,kol)
for i=wiersz,wiersz+8 do
print(tab1[i][kol])
end
end

a=input()
b=-3

a=tonumber(a)

wydruk((a-5)/0.2,b+6)


This rises error.

And I have still another question: what is biggest size of table Lua can handle?
Orwell
QUOTE (-Tom- @ Mar 19 2006, 10:22 PM) *
This rises error.
Try to run your library "dane", and be sure that the only error you have then is "Scripts are not authorized to export symbols" at the end. There may be a problem in this script, and your table "tab1" won't be exported correctly in that case...

QUOTE (-Tom- @ Mar 19 2006, 10:22 PM) *
And I have still another question: what is biggest size of table Lua can handle?
As much as the ClassPad's memory can handle ;) You could write a small script that fills a table until you get a message saying "not enough memory" rolleyes.gif
-Tom-
QUOTE
Try to run your library "dane", and be sure that the only error you have then is "Scripts are not authorized to export symbols" at the end. There may be a problem in this script, and your table "tab1" won't be exported correctly in that case...


Nope... it isnt it... runs correctly...

QUOTE
As much as the ClassPad's memory can handle wink2.gif You could write a small script that fills a table until you get a message saying "not enough memory" rolleyes.gif

I prepared a table in file and I wanted to use it as a library ( require "dane"). File size is 10KB and it seems to be too much... I think I will have to divide it in smaller parts, and call only this part which is currently needed
Kilburn
Just a stupid idea blush.gif Would you write My Lua Programs in C++ or Lua? It would be possible in Lua, as you will add "ui" package smile.gif And functions like draw.cptext and draw.luatext might be useful (I know, I already asked it... unsure.gif )

And another idea: It would be handy that we could "compile" all source codes and resources (packages, images, MEM files...) into one single project file. So, when you open the project, all the source files will be opened. I think about a "Project Manager" option, where you add or remove files and pictures from the project.
-Tom-
This is old idea... I already tried to write it in Lua, but this function for directory listing is missing so at themoment its possible but only within one directory... But I think that writing My Lua Programs in C++ shouldnt be so hard.. some modifications in main code editor and thats all, but all depends on Orwell, he must say if its really possiible.
-Tom-
Lately I often get error informing that I used all memory... how much memory Lua can accomodate for its variables? Is it possbile to build-in something like swap file? Currently memory allowed to use is not enough, and Im sure that many of us met with such error before...
Kilburn
Yes I also noticed this. When I try to write 40 5*5*4 matrices in a file, I have the error "Not enough memory", although I still have 400 KB free. (40 5*5*4 matrices should create a file of size 40000 bytes)
-Tom-
From my experience: more than 10KB crashes execution... ok.. I can do it other way, this time.. but soon maybe not and then it will be problem... build in data swapping would be good way. There could be one file for this in this new Lua folder
Orwell
QUOTE (Kilburn @ Mar 21 2006, 10:24 PM) *
And functions like draw.cptext and draw.luatext might be useful
It shouldn't be too hard to implement... I'll think about it

QUOTE
And another idea: It would be handy that we could "compile" all source codes and resources (packages, images, MEM files...) into one single project file. So, when you open the project, all the source files will be opened. I think about a "Project Manager" option, where you add or remove files and pictures from the project.
The only files that CPLua's editor can edit are the files containing Lua programs... I don't exactly see what you would mean by "open images or MEM files" unsure.gif

QUOTE (-Tom- @ Mar 25 2006, 02:47 PM) *
Lately I often get error informing that I used all memory... how much memory Lua can accomodate for its variables? Is it possbile to build-in something like swap file? Currently memory allowed to use is not enough, and Im sure that many of us met with such error before...
QUOTE (Kilburn @ Mar 25 2006, 08:49 PM) *
Yes I also noticed this. When I try to write 40 5*5*4 matrices in a file, I have the error "Not enough memory", although I still have 400 KB free. (40 5*5*4 matrices should create a file of size 40000 bytes)
QUOTE (-Tom- @ Mar 25 2006, 08:54 PM) *
From my experience: more than 10KB crashes execution... ok.. I can do it other way, this time.. but soon maybe not and then it will be problem... build in data swapping would be good way. There could be one file for this in this new Lua folder

This is becoming a real problem sad.gif
When writing in a file, all the things you "write" are actually kept in memory, and it is only written in a real MEM file when the file is closed. Thus, you need a free memory space of twice its size when you write its content.

But Tom, 10 Kb shouldn't cause much problems huh.gif Could you please send me a (short) exemple of program that causes this error?

To everyone: If you think that a program is not running correctly, or if you encounter too many problems with memory etc, please send me a program that reproduces your problem, and I will see what's exactly happening with it.
-Tom-
I have prepared recently file containing large arrays of data, I had to use scaner and OCR fort his becouse writing it on keyboard would be very stupid. First proble I encountered was too small allowed Lua file size... ok, I didvided data into smaller files... then when I typed and run require "file1 (2,3)" in main program Class pad rised error Stop, stop.. too much for me! For the moment it not great problem for me becouse I managed to handle those files and to read data in appriopriate order... its quite uncomfortable even thought faster.... sorry but now it will be quite time-consuming reproducing this error while Im really busy last days.
Orwell
Just a note though: remember, the ClassPad is only a calculator, not a Pocket PC laugh.gif

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.