Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Han

Pages: 1 ... 3 4 [5]
61
HP Calculators / Re: Let's hack the HP Prime!
« on: December 05, 2013, 10:54:31 am »
Well I bought the Prime because I was a huge fan of my two 48 that I used to program in asm (I loved Saturn asm, Jazz was so cool). But I lost them some years ago when a fire started in my flat. I don't have the real machine yet (should be here in the next few days), but I played a while with the simulator. At first, I must say I was a little disappointed. A lot of cool feature of the 48 are gone, RPN is not half as practical as it was, and RPL miss me a lot. The filesystem (sort of) that used to manage objects and variables too. It was just excellent.

If you liked the HP48 and want a faster machine with a larger display and much more expandability, why not consider an HP50G? You can program in RPL, SystemRPL, Saturn Assembly, ARM, or C (via HPGCC). As for Jazz, yeah it was very cool -- and still is. I updated it to the HP50G and it is much more robust now.

http://users.ju.edu/hduong/jazz

62
This one's more a suggestion than a bug: Despite being in CAS mode, using the Define box only creates 'normal' functions, not xcas ones.

Another bug: This program errors with "Invalid input" when I hit ENTER, yet works fine in debug mode:

Code: [Select]
EXPORT CURSOR()
BEGIN
LOCAL X,Y,K,C,P;
0▶X;0▶Y;0▶P;
WHILE 1 DO
 //WAIT()▶K;
 WAIT(.05);
 IF ISKEYDOWN(4) THEN
  RETURN {X,Y};
 END;
 IF ISKEYDOWN(2) THEN
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
  Y-1▶Y;
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
 END;
 IF ISKEYDOWN(12) THEN
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
  Y+1▶Y;
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
 END;
 IF ISKEYDOWN(7) THEN
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
  X-1▶X;
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
 END;
 IF ISKEYDOWN(8) THEN
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
  X+1▶X;
  GETPIX_P(G0,X,Y)▶C;
  BITNOT(C)▶C;
  PIXON_P(G0,X,Y,C);
 END;
 IF ISKEYDOWN(30) THEN
  REPEAT
   MOUSE()▶P;
   P[1]▶P;
  UNTIL P[5]==#1;
  B→R(P[1])▶X;
  B→R(P[2])▶Y;
 END;
 END;
END;
END;

Not sure if this was ever addressed, but the reason you are getting different behavior is due to the fact that debugging necessarily means you touched the screen (you pressed "DEBUG" on the menu). The system processes all touches and signifies that it has finished handling the touch event via the MOUSE command. So when you call MOUSE, it actually returns the last touch -- you pressing the DEBUG menu option -- along with the signal that it was handled. However, when you run it from the command line (and presumably have not touched the screen), then MOUSE returns two empty lists -- which would result in invalid input later on when you try to pull elements out of empty lists.

Pages: 1 ... 3 4 [5]