Monthly ArchiveDecember 2006
Palm News khertan on 23 Dec 2006
Christmas and new year contest
This year there are two licence of kLauncher to win.
One on PalmAttitude.org.
And an other one ll be on PalmAddicts
And have a happy holiyday everyone!
One on PalmAttitude.org.
And an other one ll be on PalmAddicts
And have a happy holiyday everyone!
Softwares khertan on 23 Dec 2006
kCrash Updated …
kCrash has just been updated to version 0.2.
It's still an alpha version, so please make a backup before try it.
I've corrected looping reset bug.
Download : kCrash 0.2
It's still an alpha version, so please make a backup before try it.
I've corrected looping reset bug.
Download : kCrash 0.2
Palm Tips khertan on 22 Dec 2006
Mo:Blog
Hi,
The last post about kCrash was writted onboard with Mo:Blog.
Mo:Blog is a great tool ... But like you can see i've converted to jpg a screen take with the freeware Snap which product bmp image. But i've use TbmpEdit to convert it to jpeg, and it seem's that conversion option is bugged.
The last post about kCrash was writted onboard with Mo:Blog.
Mo:Blog is a great tool ... But like you can see i've converted to jpg a screen take with the freeware Snap which product bmp image. But i've use TbmpEdit to convert it to jpeg, and it seem's that conversion option is bugged.
Developpment khertan on 22 Dec 2006
iziBasic and 320×480 display
In this article we'll see how to use the 320x480 display of some Palm with the standard form of iziBasic. And let user hide and or show the dynamic input area.
For this it s needed to resize the main iziBasic form.
You ll need :
- PPShell
- pp.exe pour ARM
- PalmAPI.pas (avaible with PP example)
- iziBasic
And you need to know how to compile with iziBasic and PP.
The PP Applet
//The applet take one parameters
// '1' -> This is the "Set" mode. The applet will hide the dynamic input area.
// '0' -> This is the "Get" mode. The applet will return the status of the DIA.
type RectangleTypePtr=^RectangleType; //We set here API that aren't define in PalmAPI.pas
FrmSetDIAPolicyAttr(form:formPtr;pol:UInt16):Err;inline($740E,SYSTRAP,$A470);
function SetDIAState(pol:UInt16):UInt16;inline($7400,SYSTRAP,$A470);
function WinSetConstraintsSize(winH:WinHandle;minH:UInt16;prefH:UInt16;maxH:UInt16; minW:UInt16;prefW:UInt16;maxW:UInt16):Err;inline($740D,SYSTRAP,$A470);
function FrmGetWindowHandle(form:formPtr):WinHandle;inline(SYSTRAP,$A17C);
function PINSetInputTriggerState(state:UInt16):Err;inline($7402,SYSTRAP,$A470);
Procedure WinSetBounds(winH:WinHandle;r:RectangleTypePtr);inline(SYSTRAP,$A300);
function GetDIAState:UInt16;inline($7401,SYSTRAP,$A470);
//Needed for iziBasic Applet
iBasFunType=function(S:string):string; var iBasCallPP:iBasFunType; function CallPP(S:string):string;
var
//To stack current form
f:FormPtr;
//Error
error:Err;
//Version of the DIA Library
version:UInt32;
//To stack current windows
w:WinHandle;
//To stack current size of the current windows
r:RectangleType;
//Current State of the DIA
v:UInt16;
begin
//We init the return variable
CallPP:='0';
//We make a test on the applet parameter S to see in which mode we are
if S='0' then begin
//We make some test to see if the DIA Library is present.
error:=FtrGet($70696E73,1,version);
if (error=0) then begin
if (version<>0) then begin
//We get the current form f:=FrmGetActiveForm;
//We set the DIA option for the form to true
FrmSetDIAPolicyAttr(f,1);
//Now we hide the DIA
SetDIAState(1);
//We set the good value on the DIA Button
PINSetInputTriggerState(0);
//We create a rect to resize our window.
r.topLeft.x:=0;r.topLeft.y:=0;
r.extent.x:=320;r.extent.y:=480;
//We get the current form
w:=FrmGetWindowHandle(f);
//We resize it
WinSetBounds(w,@r);
//We define the prefered,max, and min size WinSetConstraintsSize(w,320,480,320,480,320,480);
CallPP:='1';
end;
end;
end;
if S='1' then begin CallPP:='0';
error:=FtrGet($70696E73,1,version);
if (error=0) then begin
if (version<>0) then begin
//We get the DIA State v:=GetDIAState;
//We convert the integer to a string
StrIToA(S,v);
CallPP:=S;
end;
end;
end;
end;
begin
iBasCallPP:=CallPP;
end.
So nothing difficult. Only using two function that aren't implemented in iziBasic.
The iziBasic code
So now about using our applet.
'PPTest.ibas'
DIM %DIAState%
BEGIN
E=HIGHRES(1)
A$=CALLPP$(100,"0")
REPEAT
A$=CALLPP$(100,"1")
A=VAL(A$)
IF A<>%DIAState% THEN
REM GOSUB Our Drawing method
%DIAState%=D
ENDIF
E=DOEVENTS
UNTIL E=-1
END
I don't think this code need comments.
Creating full HiRes+ app with iziBasic is easy. Only things we need is a call to two api function that doesn't exist in iziBasic.
Conclusion
The management of the Dynamic Input Area is very simple. By default a form doesn't support DIA. But if we set it to be compatible with a DIA, dia can be changed. So we set the form, and we set the DIA button value then we hide the dia and resize the main iziBasic Form.
For this it s needed to resize the main iziBasic form.
You ll need :
- PPShell
- pp.exe pour ARM
- PalmAPI.pas (avaible with PP example)
- iziBasic
And you need to know how to compile with iziBasic and PP.
The PP Applet
//The applet take one parameters
// '1' -> This is the "Set" mode. The applet will hide the dynamic input area.
// '0' -> This is the "Get" mode. The applet will return the status of the DIA.
type RectangleTypePtr=^RectangleType; //We set here API that aren't define in PalmAPI.pas
FrmSetDIAPolicyAttr(form:formPtr;pol:UInt16):Err;inline($740E,SYSTRAP,$A470);
function SetDIAState(pol:UInt16):UInt16;inline($7400,SYSTRAP,$A470);
function WinSetConstraintsSize(winH:WinHandle;minH:UInt16;prefH:UInt16;maxH:UInt16; minW:UInt16;prefW:UInt16;maxW:UInt16):Err;inline($740D,SYSTRAP,$A470);
function FrmGetWindowHandle(form:formPtr):WinHandle;inline(SYSTRAP,$A17C);
function PINSetInputTriggerState(state:UInt16):Err;inline($7402,SYSTRAP,$A470);
Procedure WinSetBounds(winH:WinHandle;r:RectangleTypePtr);inline(SYSTRAP,$A300);
function GetDIAState:UInt16;inline($7401,SYSTRAP,$A470);
//Needed for iziBasic Applet
iBasFunType=function(S:string):string; var iBasCallPP:iBasFunType; function CallPP(S:string):string;
var
//To stack current form
f:FormPtr;
//Error
error:Err;
//Version of the DIA Library
version:UInt32;
//To stack current windows
w:WinHandle;
//To stack current size of the current windows
r:RectangleType;
//Current State of the DIA
v:UInt16;
begin
//We init the return variable
CallPP:='0';
//We make a test on the applet parameter S to see in which mode we are
if S='0' then begin
//We make some test to see if the DIA Library is present.
error:=FtrGet($70696E73,1,version);
if (error=0) then begin
if (version<>0) then begin
//We get the current form f:=FrmGetActiveForm;
//We set the DIA option for the form to true
FrmSetDIAPolicyAttr(f,1);
//Now we hide the DIA
SetDIAState(1);
//We set the good value on the DIA Button
PINSetInputTriggerState(0);
//We create a rect to resize our window.
r.topLeft.x:=0;r.topLeft.y:=0;
r.extent.x:=320;r.extent.y:=480;
//We get the current form
w:=FrmGetWindowHandle(f);
//We resize it
WinSetBounds(w,@r);
//We define the prefered,max, and min size WinSetConstraintsSize(w,320,480,320,480,320,480);
CallPP:='1';
end;
end;
end;
if S='1' then begin CallPP:='0';
error:=FtrGet($70696E73,1,version);
if (error=0) then begin
if (version<>0) then begin
//We get the DIA State v:=GetDIAState;
//We convert the integer to a string
StrIToA(S,v);
CallPP:=S;
end;
end;
end;
end;
begin
iBasCallPP:=CallPP;
end.
So nothing difficult. Only using two function that aren't implemented in iziBasic.
The iziBasic code
So now about using our applet.
'PPTest.ibas'
DIM %DIAState%
BEGIN
E=HIGHRES(1)
A$=CALLPP$(100,"0")
REPEAT
A$=CALLPP$(100,"1")
A=VAL(A$)
IF A<>%DIAState% THEN
REM GOSUB Our Drawing method
%DIAState%=D
ENDIF
E=DOEVENTS
UNTIL E=-1
END
I don't think this code need comments.
Creating full HiRes+ app with iziBasic is easy. Only things we need is a call to two api function that doesn't exist in iziBasic.
Conclusion
The management of the Dynamic Input Area is very simple. By default a form doesn't support DIA. But if we set it to be compatible with a DIA, dia can be changed. So we set the form, and we set the DIA button value then we hide the dia and resize the main iziBasic Form.
Softwares khertan on 21 Dec 2006
kCrash, a small tool…
Hi,
At this time my Palm is very unstable. I've too many application in developpment that are in alpha stage and aren't yet debugged. And finding the guilty after a crash is painfull. Palm TX auto reset without warning or error displaying. DebugPref and Crash always say : 'Unknow Application'. So i've create a small tool to get the name of the application that have crashed my Palm.

If your palm reset, kCrash launch and give you the name of the application which is running the crash.
I'll try to add a feature in a near futur that display the reason of the crash.
Download kCrash v0.1
EDIT : Due to some problem on Treo 650 and T5. Doing reset in loop. I ve deleted kCrash from public download.
I ll make other test to see where problem come from.
At this time my Palm is very unstable. I've too many application in developpment that are in alpha stage and aren't yet debugged. And finding the guilty after a crash is painfull. Palm TX auto reset without warning or error displaying. DebugPref and Crash always say : 'Unknow Application'. So i've create a small tool to get the name of the application that have crashed my Palm.

I'll try to add a feature in a near futur that display the reason of the crash.
EDIT : Due to some problem on Treo 650 and T5. Doing reset in loop. I ve deleted kCrash from public download.
I ll make other test to see where problem come from.