I normally send a status report on a Sunday, but this Sunday night was just too busy with updates - see below ...
1. Updated Windows emulator and DM42 image are here (as also is updated on p1 of this forum):
Pre-alpha Windows emulator: http://cocoon-creations.com/download/WP ... -09-16.zip.
Pre-alpha DM42 image: http://cocoon-creations.com/download/43C_11L2.pgm.
2. Layouts and screens did not change since the last notification, I updated p1 of this forum with the latest imagery.
3. The emulator is now fully PC keyboard compatible.
That is, if you go into ALPHA mode, then the full keyboard is accessible to type text into the WP43C. This is WAY better than the previous scheme where you have to painstakingly use the mouse to type text. You may not use this every day but for those occasions where you have to type a..z or A..Z or 0..9 or the punctuation marks available on the WP43C face plate, it is essential. You just type normally.
Left Shift is connected to the calculator shift - and right shift is connected to the normal PC keyboard. If you type Shift-T, then the emulator would change the case for you, up or down, type the letter and leave the calculator case where it was. All sounds complicated, but it just works beautifully.
4. The whole Greek letter layout on the ALPHA screen has been resolved - we have neatly arranged Greek letters on suitable A-Z buttons. That did not change again, it is on the images on p1 of this forum. Also, the Greek letter soft menu has been re-arranged similarly.
As electrical guy, I need only remember that Ω and ω are on W, and θ sits on J, and φ sits on U, more than those I doubt I'll use, but the whole lot is there for good measure, for the scientific types out there
Greek letter soft menus
5. The WP43S team, specifically Martin, released a major WP43S update last night. That has already been integrated into the WP43C code and is included in the images in (1) above.
This includes a few bug fixes, hyperbolic functions and a host of supporting stuff needed for that, including cube roots, etc. Also some complex number processing on existing functions that were upgraded. Well done to Martin. Kudus!
He also included new key templates, etc. for the 43S version, new emulator release and DM42 image with some magic way of coercing the DM42 to work with their weird keys. Complicated, but necessary. It did not import that portion into our code, as I am worried that may cause our "normal" key layout to stop working
6. RPN Math routine
I created a temporary math routine (waiting for the real thing from 43S team), i.e. for parallel calculation. What is so cool in that, you may ask... I specifically did not want to do any math routines from scratch, I wanted to make use of the fully functional complex/real/longint calculator that is already working to test the concept of actually USING the calculator platform to make a custom routine. It works beautifully, thanks to Martin's brilliant 43S system.
The || function on the 43C emulator and in the 43C DM42 image is working like this:
The point was not to bother about data types, entry rules, about nothing. I simply wanted a RPN-like function in C, using STO, RCL, stack, etc., which will work for whichever data type there user inputs, i.e. if you enter 1 Ohm and 2 Ohm in parallel, i.e. 1 ENTER 2 ||, then you will get 0.6667 or using complex numbers, if you enter impedances of (1+i*1) and (2-i*1) and tap || it still works and you will get (1.00 + i*0.333).
Maybe this inspires someone to do a better job than my hack, so here the code with RPN/RPL like comments on the right:
Code: Select all
if(JM_OPCODE == 1) { // JM_OPCODE = 1 : Parallel function, not using the stack, destroying I, J & K
// * DO THE PARALLEL FUNCTION XY / (X+Y)
// * Drops X and Y, enables stack lift and refreshes the stack
// * Leaves answer in X and updates Last X
copySourceRegisterToDestRegister(REGISTER_X, REGISTER_I); // STO I
copySourceRegisterToDestRegister(REGISTER_Y, REGISTER_J); // STO Y into J
fnMultiply(0); // *
copySourceRegisterToDestRegister(REGISTER_X, REGISTER_K); // STO K
fnDrop(0); // DROP
fnRecall(REGISTER_I); // RCL I
STACK_LIFT_ENABLE;
fnRecall(REGISTER_J); // RCL J
fnAdd(0); // +
fnRecall(REGISTER_K); // RCL K
fnSwapXY(0); // X<>Y
fnDivide(0); // /
copySourceRegisterToDestRegister(REGISTER_I, REGISTER_L); // STO I into L (To update LAST X)
refreshStack();
}