Giter Site home page Giter Site logo

c3d / db48x Goto Github PK

View Code? Open in Web Editor NEW

This project forked from swissmicros/sdkdemo

66.0 66.0 9.0 50.32 MB

RPL runtime for the DM42 calculator, in the spirit of HP48/49/50

Home Page: http://48calc.org

License: GNU Lesser General Public License v3.0

Shell 0.05% C 9.75% Makefile 0.40% C++ 89.68% QMake 0.13%
calculator dm42 firmware swissmicros swissmicros-devices

db48x's People

Contributors

c3d avatar camillew avatar kjellc avatar michaelsteinmann avatar smdavid avatar spiff72 avatar vkadlcik avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

db48x's Issues

Menu display for settings

The menu should show if FIX is selected, and if so, show something like Fix 3 if that's the current number of digits.

Do not write default settings in state file

When a particular setting corresponds to the defaults, do not write to file.

  • This will improve the behavior when merging a state
  • There is no need to change a default when loading from clean state

Tensor computations

Need to think about how to represent tensors.
A problem is to deal with covariant / contravariant operations.

Move menus to DM42 target-specific code

The exact menu layout is by construction specific to a given calculator model, so better move it to the dm42 directory instead of having it in the shared code.

Strategies to display large objects

The current strategy to display a large object on the stack is to insert an ellipsis in the middle. There are other possbile strategies, including:

  • Switcing to a smaller font
  • Displaying on multiple lines (mostly applicable for first level)
  • Cutting left or right (might be better for some objects)

This should probably be a setting.

Do not attempt to load DM42 state file

The get_reset_state_file() uses information stored by the firmware, presumably somewhere in flash memory. This is shared between DM42 and DB48X. When you switch between the two programs, they attempt to read each other's state file.

On the DM42, this manifests are a Memory Clear message, which seems perfectly reasonable, but also a more annoying Cannot read /STATE if trying to load a new state. The workaround is to first request a clean state, and then you can load a DM42 state (in a .f32 file).

On DB48X, this manifests as an error during parsing, because we read a binary file expecting to find some RPL source code. This can be avoided by ignoring any file that ends in .f42.

Hang when waking up on battery

There must be something wrong with the setup of timers when waking up from sleep that causes the timers to be out of sync, and generates a temporary freeze of the machine.

A sequence that tends to reproduce this quite often is to start editing something on USB power, then remove USB, keep editing a little, switch off/on. At that point, editing either stops working, or will after a few keystrokes. However, as soon as USB is powered back in, the machine wakes up and catches up on all the pending keystrokes.

Angle types

Implement angle types for degrees, radians and grads

This could be shown with a special postfix character:
123°, 123π or 123g

(not sure about subscript for grads)

Tag types

Tag types are used to tag another object with some information.

For example, typing :Hello:1.5 should display as Hello:1.5.
Ideally, the tag should appear on the left on the stack.

Flags

Implementing functions like CF, SF and the like

Open question is whether we try to interpret special values that control the way the calculator behaves.

Implement binary arithmetic in arbitrary bases

Implement the possibility to do binary arithmetic in arbitrary bases

The base will be selected using the Base command, shown in BasesMenu.

#1234AH will be a fixed hex number, which is always shown as #1234H irrespective of Base setting.
#1234A will be a based number, and its display will be affected by the Base setting.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.